字节数组byte[]转string后,字符匹配问题

在项目中,从map中取值,map中明明有对应的key,取出结果却为null。

由于某些原因,byte[]数组需设定固定长度,如32;但实际一般用不了这么长,如:

字节数组byte[]转string后,字符匹配问题_第1张图片

mqttTopicBytes长度为32,但实际只有钱16位放入了数值,其他为空。

将mqttTopicBytes转为字符串:

String mqttTopic = new String(mqttTopicBytes);

字节数组byte[]转string后,字符匹配问题_第2张图片

 

可以看到字符串的表面值为:000001/zxtest/TS,

但实际为:000001/zxtest/TS\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000

boolean aa = mqttTopic.equals("000001/zxtest/TS\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000");//结果true 
boolean bb = mqttTopic.equals("000001/zxtest/TS");//结果为false

 

解决方法:

将mqttTopicBytes转为字符串时,加.trim():

String mqttTopic = new String(mqttTopicBytes).trim();

 

 

你可能感兴趣的:(Java)