编辑代码

#include <stdio.h>
#include <stdlib.h>
#include  <stdint.h>






/******************************************************************************
  https://blog.csdn.net/JanKin_BY/article/details/123717299
  crc 测试
 * 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
 * Note:
 *****************************************************************************/
uint32_t crc32_mpeg_2(uint8_t *data, uint16_t length)
{
    uint8_t i;
    uint32_t crc = 0xffffffff;  // Initial value
    while(length--)
    {
        crc ^= (uint32_t)(*data++) << 24;// crc ^=(uint32_t)(*data)<<24; data++;
        for (i = 0; i < 8; ++i)
        {
            if ( crc & 0x80000000 )
                crc = (crc << 1) ^ 0x04C11DB7;
            else
                crc <<= 1;
        }
    }
    return crc;
}



int main () {
    uint8_t data;
    uint8_t crc;
 
    data = 0x34;
    uint8_t update_buff_[4]={0x01,0x01,0x01,0x01};
    crc = crc32_mpeg_2(&update_buff_, 4);
 
    printf("data:%02x, crc:%02x\n", data, crc);
	return 0;
}