gpt4 book ai didi

Java 客户端服务器聊天在转换为 byte[] 时用方 block 填充字符串

转载 作者:行者123 更新时间:2023-12-01 05:03:10 24 4
gpt4 key购买 nike

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

当我使用 .getBytes() 方法将字符串更改为 byte[] 时,它会用空方 block 填充字符串的长度。这在运输和接收过程中很好,但在某些时候我需要将字符串更改为其原始格式(当前使用 new String(byte[]) 完成并删除空方 block 。

我似乎找不到一个好的方法来做到这一点。有什么建议吗?

客户端相关代码位:

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();
}

最佳答案

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

尝试使用

例如

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

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

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

关于Java 客户端服务器聊天在转换为 byte[] 时用方 block 填充字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com