解决“[B\@”之谜:理解Java字节数组表示法
当遇到特殊的“[B\@”表示时在 Java 中打印字节数组经常让开发人员感到困惑。它代表什么,我们如何解读它的含义?
解码符号
符号“[B@”不是字节数组内容的十六进制表示而是一个对象描述符。每个组件代表一个特定的方面:
有效打印数组内容
要显示字节数组的实际内容,而不是对象 ID,您可以使用多种方法:
显式迭代和转换:
byte[] in = {1, 2, 3, -1, -2, -3};
for (byte b : in) {
System.out.print(String.valueOf(b) " ");
}
十六进制字符串转换:
System.out.println(Base64.getEncoder().encodeToString(in));
自定义字符串转换:
String byteArrayToString(byte[] in) {
char out[] = new char[in.length * 2];
for (int i = 0; i >> 4) & 15);
out[i * 2 1] = "0123456789ABCDEF".charAt(in[i] & 15);
}
return new String(out);
}
理解 JNI 命名法
“[B\@”表示法是用于描述 JNI 中类型的更大系统的一部分(Java Native界面)。这是完整列表:
理解此表示法使您能够自信地驾驭 Java 数据表示的复杂世界。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3