AX.25数据包CRC16计算结果不符,求助需反转哪些字节?
AX.25数据包CRC/FCS计算匹配问题
我在处理AX.25数据包时,自行计算CRC/FCS的结果始终与数据包中的值不符。
相关数据
- 完整比特流:
1001101010000010100010001000101010101010101001100110000010000010100001101001111010011010011000100110110001101001000000111111000001110100011010000110100101110011001000000110100101110011001000000110000100100000011101000110010101110011011101000010000001101101011001010111001101110011011000010110011101100101001011100000101011000101 - 十六进制表示:
9A 82 88 8A AA A6 60 82 86 9E 9A 62 6C 69 03 F0 74 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6D 65 73 73 61 67 65 2E 0A C5 - 数据包末尾16位CRC:
0000101011000101(对应十六进制0AC5)
核心疑惑
AX.25数据包以LSB优先发送,我不确定计算CRC时是否需要反转每个字节。
已尝试的方法
- 在线计算器计算:输入数据为
9A 82 88 8A AA A6 60 82 86 9E 9A 62 6C 69 03 F0 74 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6D 65 73 73 61 67 65 2E,结果与目标CRC不匹配。 - Python crcmod库计算:代码如下:
输出结果为import crcmod input = b"\x9A\x82\x88\x8A\xAA\xA6\x60\x82\x86\x9E\x9A\x62\x6C\x69\x03\xF0\x74\x68\x69\x73\x20\x69\x73\x20\x61\x20\x74\x65\x73\x74\x20\x6D\x65\x73\x73\x61\x67\x65\x2E" print(input) ploy_coeff = 0b10001000000100001 k = crcmod.Crc(poly=ploy_coeff, initCrc=0xFFFF, rev=True, xorOut=0xFFFF) k.digest_size = 4 k.update(input) print(hex(k.crcValue))0x9565,仍与目标CRC不符。
需求
如何得到正确的CRC值?计算过程中需要反转哪些字节?
内容的提问来源于stack exchange,提问作者madeuf
相关产品推荐
相关产品推荐

