Java 如何在映射中获取字节值
我想得到Map对象内部的字节值Java 如何在映射中获取字节值,java,Java,我想得到Map对象内部的字节值 Map<String, Object> data = new HashMap<>(); data.put("foo", new byte[]{4}); System.out.println(data.get("foo")); Map data=newhashmap(); data.put(“foo”,新字节[]{4}); System.out.println(data.get(“foo”); 我得到的是这样的。。。[B@1a779dc
Map<String, Object> data = new HashMap<>();
data.put("foo", new byte[]{4});
System.out.println(data.get("foo"));
Map data=newhashmap();
data.put(“foo”,新字节[]{4});
System.out.println(data.get(“foo”);
我得到的是这样的。。。[B@1a779dce
请帮帮我。正如@JigarJoshi在他的评论中提到的,这就是
toString()
字节[]类的toString()实现的样子。当您对字节[]
执行System.out.println
时,会调用toString()
方法在打印之前将其转换为字符串
如果要读取单个字节,则必须循环返回值
byte[] ba = (byte[]) data.get("foo");
for (byte b: ba) {
System.out.println(b);
}
当您将对象添加到映射非字节[]
时,您需要强制转换它
Map<String, Object> data = new HashMap<>();
data.put("foo", new byte[]{4,3,1,2});
System.out.println(Arrays.toString((byte[])data.get("foo")));
这就是byte[]
类的toString()
实现的样子,您的期望是什么?我希望得到字节的值,即4。data.get(“foo”)
返回一个byte[]
它不是一个字节
。你必须指定一个索引。这个重复的答案不是一个完全重复的答案,因为其中提到的是int[]
,而不是byte[]
。但同样的概念也适用。基本上,你得到的是字节[]
,但它并不像你期望的那样打印。data.get(“foo”)是一种对象类型。data.get(“foo”)是一种对象类型。@Kuletzxc,修复了它。谢谢!很好…它工作了。谢谢你的帮助。很好…这个也工作了。谢谢你的帮助。太好了!!很高兴帮助你!!
[4,3,1,2]