我正在尝试使用crcmodPython模块和2.7版本的Python解释器根据CRC-16算法计算适当的校验和。校验和参数为:
代码:
crc16 = crcmod.mkCrcFun(0x18005, rev=False, initCrc=0xFFFF, xorOut=0x0000)
print hex(crc16(str(int(0x5A0001))))
对于输入0x5A0001
,它打印0x7E16
,而我应该得到类似0xCE0A
的结果。
我检查了http://www.lokker.net/Java/crc/CRCcalculation2.htm,计算值是0xACE
,这是正确的(关于顺序)。
def crc16(数据:bytearray,偏移量,长度): 如果数据为“无”或“偏移”<;0或“偏移”>;长度(数据)-1和“偏移”+“长度”>;长度(数据): 返回0 打印(“uzunluk=”,len(数据)) 打印(数据)
下面是CRC-16/CCITT-FALSE的python实现
crcmod
工作正常。你给它的不是你认为给它的三个字节。你的str(int(0x5A0001))
提供了7个字节,这是ASCII字符5898241
将0x5a0001
转换为十进制。要给它输入字节
0x5a 0x00 0x01
,您可以(作为一种方法):打印
0xace
。相关问题 更多 >
编程相关推荐