2 回答
TA贡献1869条经验 获得超4个赞
考虑到您将十六进制序列作为str(字节),您需要做的是:
将序列拆分为较小的字符串,每个字符串表示一个字节(2个十六进制数字):“7E”,“00”,...
将每个这样的字符串转换为与十六进制表示相对应的整数值(结果将是整数列表)
添加所需的值(忽略 1st 3)
>>> byte_string = "7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F"
>>>
>>> l = [int(i, 16) for i in byte_string.split(" ")] # Split and conversion to int done in one step
>>> l
[126, 0, 10, 1, 1, 80, 1, 0, 72, 101, 108, 108, 111]
>>>
>>> [hex(i) for i in l] # The hex representation of each element (for checking only)
['0x7e', '0x0', '0xa', '0x1', '0x1', '0x50', '0x1', '0x0', '0x48', '0x65', '0x6c', '0x6c', '0x6f']
>>>
>>> s = sum(l[3:])
>>>
>>> s
583
>>> hex(s)
'0x247'
TA贡献1858条经验 获得超8个赞
您需要分两部分解决这个问题 - 将字符串转换为数字列表,然后对列表求和。为此,您可以使用内置的bytearray.fromhex和sum函数:
byteString = "7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F"
numberList = bytearray.fromhex(byteString)
total = sum(numberList)
添加回答
举报
