我从套接字收到一个字节数组中的字符串,如下所示:
[128,5,6,3,45,0,0,0,0,0]
网络协议给出的大小是字符串的总长度(包括零),因此,在我的示例中为 10。
如果我只是这样做:
String myString = new String(myBuffer);
我在字符串末尾有 5 个不正确的字符。转换似乎没有检测到字符串字符的结尾 (0)。
为了获得正确的尺寸和正确的字符串,我这样做:
int sizeLabelTmp = 0;
//Iterate over the 10 bit to get the real size of the string
for(int j = 0; j<(sizeLabel); j++) {
byte charac = datasRec[j];
if(charac == 0)
break;
sizeLabelTmp ++;
}
// Create a temp byte array to make a correct conversion
byte[] label = new byte[sizeLabelTmp];
for(int j = 0; j<(sizeLabelTmp); j++) {
label[j] = datasRec[j];
}
String myString = new String(label);
有更好的方法来处理这个问题吗?
Thanks
可能为时已晚,但可能对其他人有帮助。你能做的最简单的事情就是new String(myBuffer).trim()
这正是您想要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)