can';t在java中将接收到的UDP数据包转换为int
我编写了一个使用UDP协议发送和接收数据包的代码。当我收到can';t在java中将接收到的UDP数据包转换为int,java,string,int,udp,byte,Java,String,Int,Udp,Byte,我编写了一个使用UDP协议发送和接收数据包的代码。当我收到int,并且我确定它是一个数字时,我无法将它从字节[](接收数据包的类型)转换为int。我试图将它从byte[]转换为String,从String转换为int,但同样的问题是,我得到了异常“NumberFormatException”。我要转换的代码是: String newtext = new String (receivePacket.getData()); System.out.println("I receive "+ n
int
,并且我确定它是一个数字时,我无法将它从字节[]
(接收数据包的类型)转换为int
。我试图将它从byte[]
转换为String
,从String
转换为int
,但同样的问题是,我得到了异常“NumberFormatException”。我要转换的代码是:
String newtext = new String (receivePacket.getData());
System.out.println("I receive "+ newtext );
int location = Integer.parseInt(newtext);
控制台中显示的输出是一个数字,但代码不能视为数字。任何解决问题的建议
代码看不到数字
作为问题描述,这是完全没有意义的;但问题在于:
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.在使用此post发送数据包之前,输入的int
被转换为字节[4]
字节[4]
转换回int
感谢您试图帮助我,希望这能帮助那些面临同样问题的人。感谢您的回复,并对解释中的含糊不清表示抱歉。你的建议并不能解决我的问题,但我想我对我的问题了解得更多,那就是当我使用不同的转换方法时,整个
字节[1024]
都会被转换,而不仅仅是int
,它是数组的开始。@EJP,正确描述的问题和我发布的代码是问题的一部分。