CRC中的python,小端

时间:2011-07-06 15:32:44

标签: python crc endianness

我需要计算二进制文件的CRC校验和。 这个文件内容也是CRC,通过比较我发现文件被破坏了。

Bin文件类似于长十六进制字符串

00200020 595A0008 ......

但文件中的CRC是按整数计算的(4.byte little Endian),如此

1.int -  0x20002000
2.int -  0x8000A559

如何在不切换python中的字节的情况下获得相同的结果? 我正在尝试http://www.tty1.net/pycrc/并参与反思,但我没有得到相同的结果。

这两个字节是正确的crc 0xEF2B32F8

2 个答案:

答案 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