计算 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'
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'