我在Java中通过UDP接收带字节数组的数据包。 我知道最大可能的字节大小,但我不知道当前收到的大小。
如果我从这个字节数组创建一个String实例,那么该字符串将在有用的有效负载之后有许多NUL字符(\ u0000)。
当第一个NUL出现时,如何将此字节数组转换为String? (我不期望在我的有效载荷中有NUL。)
答案 0 :(得分:1)
您可能能够使用StringTokenizer获取字符串的第一部分,直到您看到第一个NULL。 类似于:result =(new stringTokenizer(packet,null))。nextToken()
答案 1 :(得分:1)
答案 2 :(得分:0)
不要从整个事情中创建String
。扫描字节数组为零,然后调用
new String(byteArray, 0, correctLength, "encoding")
答案 3 :(得分:0)
我最近必须解决这个问题,这是我的解决方案:
public String getString(byte[] sb) {
// trim nulls from end
int strLen = sb.length;
for (; strLen > 0; strLen--)
if (sb[strLen - 1] != '\u0000')
break;
return new String(sb, 0, strLen, "UTF8");
}