我编写了一个使用UDP协议发送和接收数据包的代码。当我收到int
时,我确定它是一个数字,我无法将其从byte[]
- 这是接收数据包的类型 - 转换为int
。我尝试将其从byte[]
转换为String
,从String
转换为int
,但同样的问题,我得到了异常“NumberFormatException”。我要转换的代码是:
String newtext = new String (receivePacket.getData());
System.out.println("I receive "+ newtext );
int location = Integer.parseInt(newtext);
控制台中显示的输出是一个数字,但代码看不到数字。任何解决它的建议。
答案 0 :(得分:0)
代码无法看到数字
作为问题描述,这完全没有意义;但问题出在这里:
String newtext = new String (receivePacket.getData());
这应该是:
String newtext = new String (receivePacket.getData(),receivePacket.getOffset(),receivePacket.getLength());
但是你的描述太模糊了,你可能会收到二进制的int
,在这种情况下你需要以下代码:
int location = new DataInputStream((receivePacket.getData(),receivePacket.getOffset(),receivePacket.getLength()).readInt();
或可能readShort()
。
答案 1 :(得分:-1)
使用以下步骤解决问题:
1.在使用此帖Convert integer into byte array (Java)发送数据包之前,输入int
已转换为Byte[4]
Byte[4]
转换回int
醇>
感谢谁试图帮助我,希望这个帮助面临同样的问题。