gpt4 book ai didi

Java byte[] 到字符串转换输出字节

转载 作者:行者123 更新时间:2023-12-01 23:36:03 27 4
gpt4 key购买 nike

在我的代码中,我通过互联网发送一个编码为字节数组的 txt 文件,然后在另一端将消息转换回并显示它。问题是,当我尝试显示它时,它总是显示为“[B@1ef9f1d”或“[B@1764be1”等。

这是接收数据的

private void parsePacket(byte[] data, InetAddress address, int port) {
String datasent[] = (new String(data).trim()).split(",");
String type = datasent[0];
String message = datasent[1];
switch(type){//Data we are receiving from client, type is 5 char
default:
System.out.println(type);
System.out.println(message);
case "invalid":
println("Invalid packet", new Color(255, 155, 155));
break;
case "login":
addConnection(message, address, port);
break;
case "SendLog":
printLog(message);
break;
}
}
private void printLog(String message) {
int charperline = 10;
String line ="";
for (int i = 0; i < message.length() / charperline; i++){
for (int j = 0; j < charperline; j++){
line += message.charAt(i + j);
}
println("LOG: " + line);
line = "";
}

}

这就是发送它的内容:

public void sendLog(){
System.out.println("sendlog()");
InputStream is = getClass().getResourceAsStream("/LOG.txt");
try
{
byte[] text = new byte[10000];
is.read(text);
sendData(("SendLog," + text).getBytes());
//is.close();
new File("/LOG.txt").delete();
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendData(byte[] data){
DatagramPacket packet = new DatagramPacket(data, data.length, ipAddress, 1332);
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e){
e.printStackTrace();
}
}

最佳答案

你所看到的

[B@1ef9f1d

是方法 toString() 的结果,所有类都继承自 Object 类,因为 Java 中的所有类都扩展了 Object。这是实现为

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

在这种情况下,getClass().getName() 将返回 [B,因为它是一个字节数组。

这是因为 Java 中的数组对象没有自定义的 toString() 方法,它们继承了 Object 的方法。

如果你想打印数组的内容,请尝试

Arrays.toString(yourByteArray);

对于自定义类,您应该始终实现(覆盖)您自己的自定义 toString() 方法。它对于日志记录很有用。请注意,与引用类型一起使用时,字符串串联会隐式使用 toString() 方法将对象转换为字符串表示形式。

关于Java byte[] 到字符串转换输出字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680077/

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