计算校验和 python iridium

问题描述 投票:0回答:1

我不断收到错误的校验和,不幸的是我不知道如何找出铱星为我的消息计算的校验和。 我想计算 123 的校验和(我需要十六进制,对于我当前的函数来说是 7b)。 我想也许我用代码计算的校验和与铱计算的不一样。这就是我所掌握的全部信息。 校验和是整个总和的最低有效 2 字节 SBD 消息。高位字节必须首先发送。例如,如果 DTE 将以 ASCII 编码的单词“hello”发送到二进制文件 9602/3 流将是十六进制 68 65 6c 6c 6f 02 14。

非常感谢任何帮助。

这是我当前的代码...

def calculate_checksum(string):  #function expects a given string to be in hexadecimal formatting
    total_sum = 0
    if len(string) != 0:
        byte_list = [int(string[i:i+2], 16) for i in range(0, len(string), 2)]
        total_sum = sum(byte_list)
    checksum = total_sum & 0xFFFF #sets digits w value >0xFFFF to zero (requirement)
    logging.debug('Calculated Checksum: ' + str(checksum))
    return checksum
python checksum iridium
1个回答
0
投票

尝试这个校验和计算代码从这里在c

得到它
def calc_checksum(data):
    check_sum = 0
    for i in range(len(data)):
        check_sum += data[i] & 0xFF
    return check_sum & 0xFFFF
© www.soinside.com 2019 - 2024. All rights reserved.