小编maj*_*x00的帖子

Crc ccitt (0x1d0f) 在 C 中计算

我有一个十六进制值数组。我已经预先计算了它的 CRC-CCITT (0x1d0f),它是:0xD7F2

我写了一个基于用 javascript 编写的工作 crc alghoritm 的算法,我用相同的数据条目进行了测试(计算在这里)。

我用 C 重写了它,但不幸的是,我得到的输出与预期不同,实际上:0xB5DB.

所以,我的问题是:算法内部可能有问题吗?错误的数据类型会导致问题吗?

这是一个大小为 2 的简单数组的示例。计算器的计算结果是 0x9770,我的算法的结果是 0x5D80。

计算算法:

unsigned int crcTest[2] = {0xB6FE,0x8C4A};

int main (void){
    unsigned int crc = doCrc(crcTest,2);
    printf("Correct CRC16-CCITT is: 0x9770\n");
    printf("Calculated result func : 0x%X\n", crc);
    return 0;
}    

unsigned int doCrc(unsigned int *data, int size)
    {
        int i, j;
        unsigned int crc = 0x1d0f;
        for (i = 0; i < size; i++){
            unsigned int xr = data[i] << …
Run Code Online (Sandbox Code Playgroud)

c crc calculation

2
推荐指数
1
解决办法
1299
查看次数

标签 统计

c ×1

calculation ×1

crc ×1