【发布时间】:2012-10-29 02:59:48
【问题描述】:
我正在构建一个聊天客户端和服务器作为课程项目的一部分,但遇到了一个我似乎无法解决的问题。文本必须以固定大小byte[](32 或 64 字节)的形式传递,具体取决于具体情况。
当我使用.getBytes() 方法将字符串更改为byte[] 时,它会用空方块填充字符串的长度。这在运输和收货期间很好,但有时我需要将字符串更改为原始格式(目前使用 new String(byte[]) 完成并删除空方格。
我似乎找不到这样做的好方法。有什么建议吗?
客户端相关码位:
byte[] bigDataByte = new byte[64];
sendData[2] = (bigDataByte = message.getBytes())
for (int i = 0; i < sendData.length; i++){
if (sendData[i] != null){
DatagramPacket sendPacket = new DatagramPacket(sendData[i], sendData[i].length, IPAddress, clientPort);
clientSocket.send(sendPacket);
}
}
相关码位服务器端:
String name = new String(getBytes(32));
private static byte[] getBytes(int size) throws IOException {
byte[] dataByte = new byte[size];
DatagramPacket dataPacket = new DatagramPacket(dataByte, dataByte.length);
servSocket.receive(dataPacket);
return dataPacket.getData();
}
【问题讨论】:
-
你能只发布你的代码的相关部分吗?
-
我想知道 .trim() 是否会起作用,它是如此简单,我没有想到它。这取决于空白方字符是否被视为空白。
-
是的,它确实有效。抱歉,我早该想到的,只是没想到方块会是“空格”。