我正在编写一个脚本,在该脚本中,我需要计算某个十六进制值的两个补码。
我从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
对象已经迭代到int
s,因此ord
不起作用。通过删除ord()
调用,直接使用c
,您的函数将适用于bytes
(而不是str
(。