如何使用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。
我正在使用编码器获取 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。