Python контрольная сумма с двумя дополнениями - PullRequest
0 голосов
/ 07 мая 2020

Я работаю в сценарии, в котором мне нужно вычислить два дополнения определенного шестнадцатеричного значения.

Я взял эту функцию из stackoverflow:

def checksum_calc(s):
    sum = 0
    for c in s:
        sum += ord(c)
    sum = -(sum % 256)
    return '%2X' % (sum & 0xFF)

, но если я ввел такие данные, как:

string = '\x00\x03\x03\xFF'

, это правильно, но если бы я представил это так:

string = b'\x00\x03\x03\xFF'

Я получаю неверную контрольную сумму.

Не могли бы вы мне с этим помочь?

1 Ответ

0 голосов
/ 07 мая 2020
Объекты

bytes уже повторяются до int s, поэтому ord не работает. Ваша функция будет работать для bytes (но не str), удалив вызов ord(), используя c напрямую.

...