我正在编写一个与LED指示板通信的应用程序。编程语言是Processing。典型的请求如下所示:
<ID01><L1><PA><FE><MA><WC><FE>Probe3E<E>
其中3E是校验和。文档说校验和“表示数据内容的Xor结果”。我不是一个编码忍者,所以我无法弄清楚如何编码。
我发现一个据称在Delphi中编写的工作示例,但无法将其转移到Processing:
Function SimpleCheckSum (const MyMessage : String) : byte;
Var res : byte;
i : integer;
Begin
res := ord(MyMessage[1]);
for i:=2 to length(MyMessage) do
res := res XOR ord(MyMessage[i]);
result := res;
End;
非常感谢任何帮助和/或想法!
答案 0 :(得分:1)
经过更长时间的研究和测试,提问者能够正确计算校验和:
String myCommand = "<L1><PA><FE><MA><WC><FE>test"; // result should be: 62
byte res = 0;
for(int i=0; i<myCommand.length(); i++){
res ^= byte(myCommand.charAt(i));
}
String checksum = hex(res);