2 回答

TA貢獻1869條經(jīng)驗 獲得超4個贊
考慮到您將十六進制序列作為str(字節(jié)),您需要做的是:
將序列拆分為較小的字符串,每個字符串表示一個字節(jié)(2個十六進制數(shù)字):“7E”,“00”,...
將每個這樣的字符串轉(zhuǎn)換為與十六進制表示相對應(yīng)的整數(shù)值(結(jié)果將是整數(shù)列表)
添加所需的值(忽略 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條經(jīng)驗 獲得超8個贊
您需要分兩部分解決這個問題 - 將字符串轉(zhuǎn)換為數(shù)字列表,然后對列表求和。為此,您可以使用內(nèi)置的bytearray.fromhex和sum函數(shù):
byteString = "7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F"
numberList = bytearray.fromhex(byteString)
total = sum(numberList)
添加回答
舉報