2017-01-05 32 views
1

我的問題也許很簡單,但我不擅長字節/十六進制操作。我需要做的從一個串口數據的校驗和與此值:使用Python求和十六進制值來獲得CheckSum

55 55 3A 0B 47 09 08 3E FF 0F 93

的最後一個值93和值,但我不知道如何做這個。 55 + 55 + 3A + 0B + 47 + 09 + 3E + 08 + FF + 0F = 93

+0

你是如何收到數據的?這些字符串?整型? – Mureinik

+0

我收到字符串中的數據 – Despota

回答

1

將原始字節串轉換爲數字序列,然後添加除最後一個數字之外的所有數字,掩碼轉換爲字節長度,並將結果與​​序列中的最後一個數字進行比較。

>>> data = bytearray('\x55\x55\x3a\x0b\x47\x09\x3e\x08\xff\x0f\x93') 
>>> sum(data[:-1]) & 0xff == data[-1] 
True 
+1

小解釋將使它成爲一個很好的答案。 BTW + 1從我身邊 –