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

标签 java string hex concatenation checksum

我想用java发送一条十六进制消息到带有校验和的设备。

    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

请问有什么指示吗?

最佳答案

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

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

关于Java 十六进制字符串连接校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385610/

相关文章:

java - MapReduce 中的 Reducer 值需要复制,否则需要修改?

java - 应用程序中的 Hibernate .hbm.xml 文件路径?

c++ - 有可能以这种方式串流吗?从字符串转换为整数?

C 数组循环错误

Python:UTF-8 十六进制到 UTF-16 十进制

c# - 将 uint 写成 Hex 而不是 Int

java - Bootstrap Weld 2.1.0 来自 void main

java - OpenSaml3 文档

javascript - 十六进制颜色代码的按位求补能否始终返回 6 个字符?

python - 为什么 python 的列表切片不会产生索引越界错误?