簡體   English   中英

python中的字節數組總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM