有效数字String的NumberFormatException

Con*_*lor 0 java string datagram parseint

我正在制作一个需要通过互联网接收数据的程序.它是使用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);
Run Code Online (Sandbox Code Playgroud)

但是,当我检查内容时data,我看到它只包含55,52,49,56,53,0,0,0,0,0,0,0,0,0,0,0,0,这很好,它是字符串"74185".这引发了异常.

当我将"74185"硬编码为length字符串时,一切都运行良好.

这可能会出错?

Rol*_*lig 5

您的字符串包含嵌入\0字符.在Java中,它们是字符串的一部分,而不是在C.

因此,您首先需要\0在字符串中找到第一个匹配项,然后将子字符串放到该位置.