如何计算Hex文件中的校验和?

时间:2016-01-03 23:36:32

标签: binary hex

正如标题所示,我很想知道如何计算校验和值,从我读过它的2s补码计算得出。下面是加载到我的微控制器上的hex文件中的2行,我添加了空格以便于读取,每行显示S315,第1行的地址为080C0000,后跟16个十六进制值,代表字节,第1行的AA和第2行的AB是I假设的校验和值。

对于第1行,我尝试添加以下15+08+0C+00+00+4D+53+53+70+6F+74+31+00+66+10+AE+19+7E+63+1F+78,其中包含555 Hex或‭010101010101‬二进制文件。我已将二进制值输入到在线2s补码计算器中,但它总是说"无效二进制" ??

S3 15 080C0000 4D 53 53 70 6F 74 31 00 66 10 AE 19 7E 63 1F 78 AA

S3 15 080C0010 00 00 00 00 45 85 63 EB FF FF FF FF 04 00 03 00 AB

1 个答案:

答案 0 :(得分:5)

您添加字节值,就像您已完成的那样。从这个总和中你只取最低有效字节。

然后为摩托罗拉HEX(SREC): 然后通过反转其位来获取该字节的一个补码(即1s变为0,反之亦然)。

然后对于Intel HEX: 然后通过反转其位来取该字节的两个补码(即1s变为0,反之亦然),然后加1。

按照你的例子,你得到的总和是0x555。然后取最低有效字节,即0x55。

对于摩托罗拉HEX(SREC):计算其中的一个补充。你得到0xAA作为校验和。

对于Intel HEX:计算其中的两个补码。你得到0xAB作为校验和。