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

Java字节[]到字符串转换输出字节,java,string,bytearray,Java,String,Bytearray,在我的代码中,我通过互联网发送一个编码成字节数组的txt文件,然后将消息转换回另一侧并显示出来。问题是,当我尝试显示它时,它总是显示为“[B@1ef9f1d“或”[B@1764be1“等等 这就是接收数据的原因 private void parsePacket(byte[] data, InetAddress address, int port) { String datasent[] = (new String(data).trim()).split(","); String

在我的代码中,我通过互联网发送一个编码成字节数组的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 = "";
    }

}
你看到了什么

[B@1ef9f1d
是方法
toString()
的结果,所有类都继承自
对象
类,因为Java中的所有类都扩展了
对象

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
在本例中,
getClass().getName()
将返回
[B
,因为它是一个字节数组

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

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

Arrays.toString(yourByteArray);
对于自定义类,您应该始终实现(重写)您自己的自定义
toString()
方法。它对于日志记录非常有用。请注意,与引用类型一起使用时,字符串连接会隐式地使用
toString()
方法将对象转换为字符串表示形式。

您看到的内容

[B@1ef9f1d
是方法
toString()
的结果,所有类都继承自
对象
类,因为Java中的所有类都扩展了
对象

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
在本例中,
getClass().getName()
将返回
[B
,因为它是一个字节数组

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

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

Arrays.toString(yourByteArray);

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

+1对于Array.toString,实际上不知道它的存在。并且custom toString=goodThank!但是现在,它显示为整数数组?[32,56,…]@Kyranstar不客气。字节表示为从
-128
127
的整数。您想要二进制表示吗?如
0000101
中所示?您必须自己进行格式化,但JDK中存在方法来进行格式化。+1对于Array.toString,实际上不知道它的存在。自定义toString=goodThank you!但是现在,它显示为一个整数数组?[32,56,…]@Kyranstar不客气。一个
字节
被表示为一个从
-128
127
的整数。你想要一个二进制表示吗?如
0000101
中所示?你必须自己进行格式化,但JDK中存在这样做的方法。