【发布时间】:2011-02-25 10:22:24
【问题描述】:
有人可以解释如何用 8 位二进制加法计算校验和吗?这是文档的摘录:
这是消息的一般形式:
STX | TYPE | FS | DATA | FS | CHK | ETX
STX 是 HEX 02
ETX 是 HEX 03
FS 是十六进制 15
“类型”是唯一的 1 字节消息标识符(例如,“P”表示轮询消息)。 “数据”包含可打印的 ASCII 字符。
校验和
校验和是针对所有字符计算的,包括<STX> 和<CHK> 之间的所有<FS> 字符。 校验和由所有包含字符的 8 位二进制加法计算得出,其中第 8 位或奇偶校验位假定为零。超过第 8 位的进位将丢失。 8 位结果被转换为两个可打印的 ASCII 十六进制字符,范围从 00 到 FF,然后作为<CHK> 插入到数据流中。十六进制字符 A-F 是大写的。接收设备重新计算缓冲消息的校验和,并将其与接收到的校验和进行比较。比较是后续确认(<ACK>)或否定确认(<NAK>)传输的基础。
【问题讨论】:
-
对我来说似乎很清楚。你不明白什么?
-
你能给我看一个例子(示例代码)吗?从来没有做过这样的事情......
-
你需要在 Delphi 或 Java 中使用它吗?
-
没关系,两种语言我都懂,虽然这是在delphi中。
标签: java algorithm delphi binary checksum