[英]Bytearray sum in python
我在python 2.7中使用字節數組,以便解析來自串行端口的數據流。 我面臨一個奇怪的行為:我試圖計算接收到的數據包的校驗和以檢查其有效性,但是我在bytearray上的sum()
函數遇到了問題。 我本來希望,作為字節數組的字節數組,它將把每個字節相互求和,對嗎? 只是沒有。
例如:我有這個小包
str = '200a02daffe0fe3d140500f6fff6ff6df42c0aabfe'
b = bytearray(str)
總結其內容輸出:
sum(b)
3263
正確的結果是
2915
至少這就是計算器所說的。 該功能:
def somma_hex(str):
s = 0
for i in range(0,len(str)-1,2):
s += int(byte[i:i+2],16)
輸出正確的值2915。
沒什么大不了的,我可以使用編寫的簡單函數代替sum()
但我想知道發生了什么事?
謝謝
Bytearray有42個8位元素,這些元素由sum()解析。 在somma_hex中,將其拆分為兩個字節的塊並將其解析為16位整數。 事實是顯而易見的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.