2017-01-05 3 views
1

Мой вопрос, возможно, прост, но я не очень хорошо разбираюсь в байтах/шестнадцатеричных операциях. Мне нужно, чтобы сделать контрольную сумму из последовательного порта данных с этим значением:Sum Hex Значения с использованием Python для получения CheckSum

55 55 3A 0B 47 09 3E 08 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 с моей стороны –

Смежные вопросы