我正在制作一个需要通过互联网接收数据的程序。它使用DatagramSockets并接收DatagramPackets。这一切工作正常,它收到的字节数组是我所期望的。NumberFormatException有效数字字符串
但是,当我尝试将字节数组转换为字符串,然后转换为整数时,会发生很奇怪的事情。
运行下面的代码给出了一个NumberFormatException异常的parseInt
行:
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构造函数?你是否在十六进制中一次只输出一个字符串? – bmargulies