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

时间:2015-08-09 13:57:24

标签: python python-3.x binary hex

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

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是二进制数列表吗?我是否正确添加字节?

1 个答案:

答案 0 :(得分:0)

这应该给你正确的总和:

sum(record_block) & 0xff

但是您的示例校验和应为'AB'