0

我有一个大小为 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[] 转换字符串时,如何截断字符串以仅包含“hello”?

添加

根据马尔乔的回答,这解决了我的问题:

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

2 回答 2

1

也许您应该尝试在收到数据后检查收到的数据的长度:

http://docs.oracle.com/javase/1.5.0/docs/api/java/net/DatagramPacket.html#getLength%28%29

这应该是 4(在调用 socket.receive() 之后)

于 2013-04-23T02:40:00.547 回答
0

如果额外的咬都是空的/空白,则 trim() 应该这样做。

于 2013-04-23T02:37:29.503 回答