Java十六进制字符串连接校验和

时间:2015-05-21 22:48:31

标签: java string hex concatenation checksum

我想在java中使用check sum向设备发送十六进制消息。

    String msg = "\u0002\u0053\u003F\u0003";
    String checksum = "\u00EE";
    String last = "\u0004";
    msg = msg + checksum + last;
    sendmessage(msg);

如果我对上面的校验和进行硬编码就行了。但如果我动态插入校验和,则不会。这就是我试过的

String msg = "\u0002\u0053\u003F\u0003";
String checksum = String.format("\\u00%2X",238); // decimal 238 = Hex \u00EE
String last = "\u0004";
msg = msg + checksum + last;
sendmessage(msg) ; //getting invalid checksum because it is not inserted properly

请问任何指示?

1 个答案:

答案 0 :(得分:1)

\uxxxx语法由Java编译器处理,它不是文字的。这听起来像你想要的简单:

String msg = "\u0002\u0053\u003F\u0003";
char checksum = (char)238;
String last = "\u0004";
msg = msg + checksum + last;
sendmessage(msg);