crc_mpg.cc
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:1k
源码类别:

DVD

开发平台:

Unix_Linux

  1. /*
  2.   File: crc.cc
  3. */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <fstream.h>
  7. #include "error.hh"
  8. #include "debug.hh"
  9. #include "util.hh"
  10. #include "crc.hh"
  11. // generator polinomial:
  12. const uint16 Crc16::polynomial = 0x8005;
  13. void Crc16::add_bits(uint32 bitstring, uint32 length){
  14. #ifdef DEBUG
  15.   if (!length){
  16.     cerr << "Length of bitstring has to be > 0 in Crc16::add_bits()!n";
  17.     exit (1);
  18.   }
  19. #endif
  20.   uint32 bitmask = 1 << (length - 1);
  21.   do
  22.     if (!(crc & 0x8000) ^ !(bitstring & bitmask)){
  23.       crc <<= 1;
  24.       crc ^= polynomial;
  25.     }
  26.     else crc <<= 1;
  27.   while (bitmask >>= 1);
  28. }