我需要计算二进制文件的CRC校验和。 这个文件内容也是CRC,通过比较我发现文件被破坏了。
Bin文件类似于长十六进制字符串
00200020 595A0008 ......
但文件中的CRC是按整数计算的(4.byte little Endian),如此
1.int - 0x20002000
2.int - 0x8000A559
如何在不切换python中的字节的情况下获得相同的结果? 我正在尝试http://www.tty1.net/pycrc/并参与反思,但我没有得到相同的结果。
这两个字节是正确的crc 0xEF2B32F8
答案 0 :(得分:1)
尝试使用struct模块。您可以打开文件并使用unpack读取任何Endianess所需的任何格式的数据。
答案 1 :(得分:0)
我已经编写了以下用于计算crc8的代码:
acklist = [] # a list of your byte string data
x = 0xff
crc = 0
for i in range(len(acklist)):
crc += int(acklist[i], 16) & x
print(crc)
crc = ~crc
crc += 1
crc1 = crc >> 8 & x
crc2 = crc & x