【问题标题】:Python two complement checksumPython 二补校验和
【发布时间】:2020-05-06 21:12:13
【问题描述】:

我正在编写需要计算某个十六进制值的二进制补码的脚本。

我从stackoverflow中获取了这个函数:

def checksum_calc(s):
    sum = 0
    for c in s:
        sum += ord(c)
    sum = -(sum % 256)
    return '%2X' % (sum & 0xFF)

但如果我引入如下数据:

string = '\x00\x03\x03\xFF'

是正确的,但如果我这样介绍:

string = b'\x00\x03\x03\xFF'

我得到不正确的校验和。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: python python-3.x encode checksum


    【解决方案1】:

    bytes 对象已经迭代到ints,所以ord 不起作用。通过直接使用c 删除ord() 调用,您的函数将适用于bytes(但不适用于str)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 2016-01-13
      • 2018-08-11
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多