【发布时间】:2013-04-23 02:30:15
【问题描述】:
我有一个大小为 200 的字节数组,其中包含使用socket.receive() 接收的数据。假设数据包数据是“hello”。
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”?
添加
根据 malchow 的回答,这解决了我的问题:
int packetLength = packet.getLength();
byte[] byte1 = packet.getData();
String result = new String(byte1);
return result.substring(0, packetLength);
【问题讨论】:
-
如果多余的部分都是空的/空白,trim() 应该这样做。
-
这里有问题。作为客户,您如何知道您何时收到了整个字符串?那就是 - 你有什么方法知道你已经获得了所有的角色数据?
-
这是单元测试代码的一部分,所以我确切知道我发送的字符串。
-
@Thomas:有效。请回答以便我接受。