Python二进制补码校验和



我正在编写一个脚本,在该脚本中,我需要计算某个十六进制值的两个补码。

我从stackoverflow获得了这个函数:

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

但如果我引入像这样的数据

string = 'x00x03x03xFF'

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

string = b'x00x03x03xFF'

我的校验和不正确。

你能帮我做这个吗?

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

最新更新