计算 Intel 十六进制扩展线性地址记录的校验和
Calculating checksum of a Intel hex extended linear address record
我有十六进制记录 record:02000004000107。
我的翻译是02: no of data bytes; 00000:address 字段
04:record类型扩展线性记录; 0001:upper 16 位地址。
07:expected校验和
我有计算校验和以验证记录是否正确的功能。
无符号字符校验 = 02 + 00 + 00 + 01
chk = ~chk + 1 = 0xf9
我的校验和与记录中的预期校验和 07 不匹配。
我的疑问:
a) 我对校验和的记录和数学的翻译好吗?
b) 如果是,为什么计算的校验可能不匹配?是不是记录不好?
我认为你对字段的解释是正确的,你对校验和的拒绝也是正确的。
该行所有字节的总和应为零(模 256)。
2 + 4 + 1 + 7 不等于 0,但 2 + 4 + 1 等于 7。
看来生成该行的软件将所有字节相加并将总和写入校验和字段,他们忘记取反了。
我有十六进制记录 record:02000004000107。
我的翻译是02: no of data bytes; 00000:address 字段 04:record类型扩展线性记录; 0001:upper 16 位地址。 07:expected校验和
我有计算校验和以验证记录是否正确的功能。
无符号字符校验 = 02 + 00 + 00 + 01 chk = ~chk + 1 = 0xf9
我的校验和与记录中的预期校验和 07 不匹配。
我的疑问: a) 我对校验和的记录和数学的翻译好吗? b) 如果是,为什么计算的校验可能不匹配?是不是记录不好?
我认为你对字段的解释是正确的,你对校验和的拒绝也是正确的。
该行所有字节的总和应为零(模 256)。
2 + 4 + 1 + 7 不等于 0,但 2 + 4 + 1 等于 7。
看来生成该行的软件将所有字节相加并将总和写入校验和字段,他们忘记取反了。