Java で UDP 経由でバイト配列のパケットを受信しています。可能な最大バイト サイズはわかっていますが、現在受信しているサイズはわかりません。
このバイト配列から String インスタンスを作成すると、有用なペイロードの後に非常に多くの NUL 文字 (\u0000) が文字列に含まれます。
最初の NUL が表示される時点まで、このバイト配列を String に変換するにはどうすればよいですか? (ペイロードに NUL があるとは思わない)。
String
split
正規表現が現れる場所に基づいて文字列の配列に分割するメソッドがあります。あなたができる
s = s.split("\u0000")[0];
文字列を NUL 文字で分割し、最初のセクションを取得します。
最初の NULL が表示されるまで、StringTokenizer を使用して文字列の最初の部分を取得できる場合があります。次のようなもの: result = (新しい stringTokenizer(packet, null)).nextToken()
String
全体から作成しないでください。ゼロのバイト配列をスキャンしてから、呼び出します
new String(byteArray, 0, correctLength, "encoding")