我有一个大小为200的字节数组,其中包含使用socket.receive()
收到的数据。假设分组数据是“你好”。
int size = 200;
DatagramPacket packet = new DatagramPacket(new byte[size], size);
socket.receive(packet);
byte[] byte1 = packet.getData();
我试图将字节数组转换为字符串,字符串长度为200,即使它只输出'hello'字符串。
String result = new String(byte1); // .toString();
System.out.println(result.length()); --> 200
System.out.println(result); ---> hello
从byte []转换它时,如何截断String只包含“hello”?
根据malchow的回答,这解决了我的问题:
int packetLength = packet.getLength();
byte[] byte1 = packet.getData();
String result = new String(byte1);
return result.substring(0, packetLength);
答案 0 :(得分:1)
也许您应该尝试检查收到后收到的数据的长度:
http://docs.oracle.com/javase/1.5.0/docs/api/java/net/DatagramPacket.html#getLength%28%29
这应该是4(在调用socket.receive()之后)
答案 1 :(得分:0)
如果额外的咬合都是空的/空白,trim()应该这样做。