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
是二进制数列表吗?我是否正确添加字节?
答案 0 :(得分:0)
这应该给你正确的总和:
sum(record_block) & 0xff
但是您的示例校验和应为'AB'