如何使用c编程语言计算6位CRC?

How to calculate the 6 Bit CRC using the c programming lanuguage?

我正在使用编码器获取 0 到 24 位,其中 0 到 5 位是 CRC 位。谁能帮助我了解如何计算这 6 位的 CRC 码?

没有示例,我无法确定,但这将按照描述计算 CRC,假设触发器的初始值为零。

unsigned crc6biss(uint32_t data, unsigned bits) {
    while (bits--)
        data = data & 0x80000000 ? (data << 1) ^ 0x0c000000 : data << 1;
    return ~data >> 26;
}

这里 data 是您的数据位,但非常重要的是,在 32 位字中向上移动,以便数据的最高有效位是 data 的最高有效位。 bits 是要处理多少位。所以数据位是data的位32-bits..31。其余位为零。 6 位 CRC returned 在 return 值的最低有效六位中。

根据您的文档,bits 将是 18、19 或 21。