计算 Python 中 Intel Hex 记录的校验和 3

Compute the checksum of an Intel Hex record in Python 3

Intel 十六进制校验和 算法是通过添加一串字节来计算的。最后一个字节是字符串其余部分之和的二进制补码,因此将其添加到有效字符串中应该等于零。

record_block是字节数组,这样读入:

file_handle = open("branson_weld_data.txt","rb")
ba = bytearray(file_handle.read())
# record_block is 20 20 00 00 00 3D 25 00 00 00 2B 02 00 85 01 00 31
# checksum is last byte, 31

我没有成功将 Python 字节列表的字节加在一起。

def verify_checksum(record_block):
    byte_sum = 0
    for byte in record_block:
        byte_sum &= b
    return byte_sum

print(verify_checksum(record_block))
    # should be zero

record_block是二进制数列表吗?我添加字节正确吗?

这应该会给你正确的总和:

sum(record_block) & 0xff

但是你的例子校验和应该是'AB'