如何解决在线校验和计算器如何工作?
我有一个如下所示的十六进制代码。
025001ef5401582102049123a715060e04311c032d0100000100da646405ffaab90000000e0c002a054b006e0000f10170000100050701f83fe40002000500009219120003000400014cc80004000400a1d0330005000400252e280010000201170012000e484c543530305f56333034373042001300143839363630333230323030303237383737363446001400011f0015000e01030200030004000501060007000016000202cb300900249906000232339907000131990800073030303839363399090005323033303090110001013010000601000201060130120004000000003013000900016200ec0040010030140005fdffff5f0b30150002000d3016000200213017000104301800020004301900020061301a0008017d0196012801d4901000010160c00002038860d000012862f000020000605000017f64900001006010000100500100010050020001015003000100500400010050050002000050060002155450070002155450080001005009000100500a000100500b000100500c000100500d000146500e000400000000500f00010050100004000000005011000400000000501200040000000050130004000000005014000400000000501500040000000050160004000007d45017000200295019000400000000501a0006020000000000501b000100501c0002003c501d0006000000000000
然后,我去 https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/ 计算 CheckSum8 Xor。结果返回“a0”。我想知道这个计算器是如何工作的。谁能用 Python 函数向我解释?谢谢。
解决方法
CheckSum8 Xor
我使用过您链接的工具,在这种情况下它似乎使用了 Parity word algorithm,您可以按如下方式计算它:
- 将您的十六进制字符串转换为 base-2(即由
0
和1
组成) - 将其分成多个块,每个块包含 8 位(基数为 2 的数字)
- 异或所有这些
请注意,由于我们需要 4 位来写入一个十六进制数字,因此我们可能只是替换 1. 和 2. 使用分成多个块,每个块包含 2 个基数为 16 的数字。
示例:输入为 ABCDEF
然后块为 AB
、CD
、EF
校验和为 AB
xor CD
xor {{1} } 给出EF
。在 89
中,这可以表示为
python
输出
print(hex(0xAB ^ 0xCD ^ 0xEF))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。