1

我正在构建一个聊天客户端和服务器作为课程项目的一部分,并且遇到了一个我似乎无法解决的问题。byte[]根据特定情况,文本必须以固定大小(32 或 64 字节)的形式传递。

当我将字符串更改为byte[]使用该.getBytes()方法时,它会用空方块填充字符串的长度。这在运输和收货期间很好,但在某些时候我需要将字符串更改为原始格式(目前已完成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();
 }
4

1 回答 1

0

不确定,但问题可能是您没有指定字符集。

尝试使用

例如

byte[] bytes = str.getBytes("UTF-8");

String str = new String(bytes, "UTF-8");

默认的使用平台的默认字符集,这可能会导致不匹配。

于 2012-10-29T03:13:19.663 回答