String encode = Base64.encodeBase64String("Hello".getBytes());
System.out.println(encode);
byte[] decode = Base64.decodeBase64(encode);
System.out.println(decode.toString());
我不知道这里有什么不对。我已经尝试了所有可能的组合。设置charset,toString,no toString。编码工作得很好。我可以将该号码丢入Web解码器并每次都获得正确的值。只是不能让这个工作。
输出:
run:
SGVsbG8= (encode)
[B@1fb8ee3 (decode)
如果我使用for循环并手动将字符添加到字符串中,我可以使它工作。但是我觉得String为我做了那个?
答案 0 :(得分:5)
当前的问题是如何将字节数组转换为字符串。
请改为尝试:
System.out.println(new String(decode));
然而,使用未指定字符编码的String.getBytes()
或new String(byte[])
的重载通常是个坏主意。他们使用平台默认编码,这意味着您的代码不可移植 - 或者至少,您的数据不是。我建议你使用常见的编码,如UTF-8。
答案 1 :(得分:2)
toString()
没有达到你期望的效果......它只是来自toString()
的默认Object
实现,它根据哈希码的哈希码返回一个字符串。宾语。试试new String(decode)
。