高级会员
- 积分
- 561
- 金钱
- 561
- 注册时间
- 2014-10-15
- 在线时间
- 132 小时
|
1金钱
代码:
我想知道怎么算出来的。于是我写了一个C程序验证
- #include "stdio.h"
- #define uint32_t unsigned int
- #define uint16_t unsigned short
- #define uint8_t unsigned char
- #define BUFFER_SIZE 1
- uint32_t temp;
- static const uint32_t aDataBuffer = 0x1234;
- /******************************************************************************
- * Name: CRC-32/MPEG-2 x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
- * Poly: 0x4C11DB7
- * Init: 0xFFFFFFF
- * Refin: False
- * Refout: False
- * Xorout: 0x0000000
- *****************************************************************************/
- uint32_t crc32_mpeg_2(uint32_t *data, uint16_t length)
- {
- uint8_t i;
- uint32_t crc = 0xffffffff; // Initial value
- while(length--)
- {
- crc ^= (*data++) << 0;
- for (i = 0; i < 32; ++i)
- {
- if ( crc & 0x80000000 )
- crc = (crc << 1) ^ 0x0000009b;
- else
- crc <<= 1;
- }
- }
- return crc;
- }
- void main(void)
- {
- temp=crc32_mpeg_2(&aDataBuffer, BUFFER_SIZE);
- printf("crc32 value=:%x\r\n",temp);
- }
复制代码 结果得到结果:
得到的值是0xfff75e7f
不是0xef.
请高手指教,谢谢!
|
|