我使用MQTT客户端/代理从一个设备向另一个设备发送消息。该消息在两个设备之间以String
成功交换(发送和接收)。
但是,在MQTT-Broker(即服务器)上,消息字符作为字符串中的ASCII编号接收。
例如,如果我发送:
“这是一个测试”
在经纪人身上显示:
“84,104,105,115,32,105,115,32,97,32,116,101,115,116,10”
使用Java,我需要一种方法将这个ASCII字符串转换回服务器上的字符串以进行进一步处理。
怎么做?谢谢
答案 0 :(得分:1)
您可以使用带有分隔符的StringTokenizer
作为逗号来中断字符串,然后对每个字符串进行迭代并使用Character.toString ((char) i);
答案 1 :(得分:1)
将字符串转换为byte []并使用byte []
创建一个新字符串String str = "84,104,105,115,32,105,115,32,97,32,116,101,115,116,10";
String[] chars = str.split(",");
byte[] bytes = new byte[chars.length];
for (int i = 0; i < chars.length; i++) {
bytes[i] = Byte.parseByte(chars[i]);
}
return new String(bytes);
答案 2 :(得分:0)
如果您可以使用stream
java-8
String str = Stream.of("84,104,105,115,32,105,115,32,97,32,116,101,115,116,10".split(","))
.map(ch -> (char) Integer.valueOf(ch).intValue())
.collect(StringBuilder::new,
StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(str); // This is a test