0

インターネット経由でデータを受信する必要があるプログラムを作成しています。DatagramSockets を使用して DatagramPackets を受信して​​います。これはすべて正常に機能し、受け取るバイト配列は私が期待するものとまったく同じです。

ただし、バイト配列を文字列に変換してから整数に変換しようとすると、非常に奇妙なことが起こります。

parseInt以下のコードを実行すると、その行で NumberFormatException が発生します。

String length = new String(data, 1, data.length-1);
System.out.println("length = "+length);
size = Integer.parseInt(length);
System.out.println("size = "+size);

ただし、 の内容を調べると、dataだけが含まれていることがわかります55,52,49,56,53,0,0,0,0,0,0,0,0,0,0,0,0。これは問題なく、文字列 "74185" です。ただし、これは例外をスローします。

「74185」をlength文字列としてハードコーディングすると、すべてがうまく機能します。

ここで何がうまくいかないのでしょうか?

4

2 に答える 2

5

文字列に埋め込み文字が含まれてい\0ます。Java では、C 以外では文字列の一部です。

したがって、最初に文字列内で が最初に出現する場所を見つけて\0から、その位置までの部分文字列を取得する必要があります。

于 2013-11-03T22:58:25.387 に答える