在编程LED板时计算数据内容的Xor结果的校验和

时间:2011-06-24 15:52:34

标签: checksum processing

我正在编写一个与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;

非常感谢任何帮助和/或想法!

1 个答案:

答案 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);