在Java中正确截断的byte []到String转换

时间:2013-04-23 02:30:16

标签: java string truncate

我有一个大小为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”?

ADDED

根据malchow的回答,这解决了我的问题:

int packetLength = packet.getLength();
byte[] byte1 = packet.getData();
String result = new String(byte1);
return result.substring(0, packetLength);

2 个答案:

答案 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()应该这样做。