Определить 8 бит по модулю 256 Контрольная сумма в виде строки ascii [-Python] - PullRequest
0 голосов
/ 27 июня 2018

Я хочу определить 8-битную контрольную сумму по модулю 256 строки ASCII. Я знаю формулу:

checksum = (sum of bytes)%256

Как я могу сделать это в Python (манипулировать байтами)? Если я начну со строки «1c03e8», я должен вывести 0x94. Основная проблема в том, что я не уверен, как найти сумму байтов строки ASCII. Вот основная идея того, что я ищу:

https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/

Имеет CheckSum8 по модулю 256

Я пытался:

component = ('1c03e8') 
for i in range(len(component)):
            checksum.append(int(float(component[i].encode("hex"))))
            print checksum
    print hex(int(sum(checksum)%256))

это хотя и дает мне 0x52

1 Ответ

0 голосов
/ 27 июня 2018

Вам нужно закодировать строку как ASCII, потому что, как вы сказали, это строка ASCII.

Пример, быстрое и грязное решение:

print(hex(sum('1c03e8'.encode('ascii')) % 256))
...