无法将收到的UDP数据包转换为java中的int

时间:2018-03-26 19:45:14

标签: java string int udp byte

我编写了一个使用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);

控制台中显示的输出是一个数字,但代码看不到数字。任何解决它的建议。

2 个答案:

答案 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]

  1. 使用此帖http://www.java2s.com/Code/Android/Date-Type/Convertabytearrayinteger4bytestoitsintvalue.htm
  2. 将其从Byte[4]转换回int

    感谢谁试图帮助我,希望这个帮助面临同样的问题。