Вычислить контрольную сумму Python Iridium ⇐ Python
Вычислить контрольную сумму Python Iridium
Я постоянно получаю неправильную контрольную сумму, к сожалению, я не знаю, как узнать, какую контрольную сумму Iridium рассчитала для моего сообщения. Я хочу вычислить контрольную сумму 123 (которая мне нужна в шестнадцатеричном формате, то есть 7b для моей текущей функции). Я думаю, что, возможно, контрольная сумма, которую я вычисляю с помощью своего кода, не совпадает с той, которую вычисляет Iridium. Это вся информация, которой я располагаю. Контрольная сумма — это младшие 2 байта суммы всего Сообщение СБД. Старший байт должен быть отправлен первым. Например, если DTE должны были отправить слово «привет», закодированное в ASCII, на двоичный код 9602/3. поток будет шестнадцатеричным: 68 65 6c 6c 6f 02 14.
Любая помощь очень ценится.
Это мой текущий код...
def Calculate_checksum(string): #function ожидает, что данная строка будет в шестнадцатеричном формате. общая_сумма = 0 если len(строка) != 0: byte_list = [int(string[i:i+2], 16) для i в диапазоне (0, len(string), 2)] total_sum = сумма (список_байтов) контрольная сумма = total_sum & 0xFFFF #устанавливает цифры w значение >0xFFFF в ноль (требование) logging.debug('Вычисленная контрольная сумма: ' + str(контрольная сумма)) вернуть контрольную сумму
Я постоянно получаю неправильную контрольную сумму, к сожалению, я не знаю, как узнать, какую контрольную сумму Iridium рассчитала для моего сообщения. Я хочу вычислить контрольную сумму 123 (которая мне нужна в шестнадцатеричном формате, то есть 7b для моей текущей функции). Я думаю, что, возможно, контрольная сумма, которую я вычисляю с помощью своего кода, не совпадает с той, которую вычисляет Iridium. Это вся информация, которой я располагаю. Контрольная сумма — это младшие 2 байта суммы всего Сообщение СБД. Старший байт должен быть отправлен первым. Например, если DTE должны были отправить слово «привет», закодированное в ASCII, на двоичный код 9602/3. поток будет шестнадцатеричным: 68 65 6c 6c 6f 02 14.
Любая помощь очень ценится.
Это мой текущий код...
def Calculate_checksum(string): #function ожидает, что данная строка будет в шестнадцатеричном формате. общая_сумма = 0 если len(строка) != 0: byte_list = [int(string[i:i+2], 16) для i в диапазоне (0, len(string), 2)] total_sum = сумма (список_байтов) контрольная сумма = total_sum & 0xFFFF #устанавливает цифры w значение >0xFFFF в ноль (требование) logging.debug('Вычисленная контрольная сумма: ' + str(контрольная сумма)) вернуть контрольную сумму
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение