【问题标题】:CRC in python, little Endianpython中的CRC,小端
【发布时间】:2011-07-06 15:32:44
【问题描述】:

我需要计算二进制文件的 CRC 校验和。 这个文件内容也有 CRC,通过比较我发现文件何时损坏。

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

00200020 595A0008 ......

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

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

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

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

【问题讨论】:

    标签: python crc endianness


    【解决方案1】:

    尝试使用struct 模块。您可以打开一个文件并使用 unpack 以任何您想要的任何 Endianess 格式读取数据。

    【讨论】:

      【解决方案2】:

      我已经编写了以下计算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
      

      【讨论】:

      • 这不是 CRC。
      猜你喜欢
      • 2022-08-24
      • 2016-12-30
      • 1970-01-01
      • 2018-03-31
      • 2011-06-30
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多