【发布时间】:2013-11-14 13:38:33
【问题描述】:
我正在制作一个需要通过互联网接收数据的程序。它使用 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 字符串时,一切正常。
这里可能出了什么问题?
【问题讨论】:
-
您确定对从网络读取的字节数给予了适当的关注吗?您是否考虑过将显式编码传递给 String 构造函数?您是否以十六进制格式一次一个字符地转储了字符串?
标签: java string datagram parseint