String encode = Base64.encodeBase64String("Hello".getBytes());
System.out.println(encode);
byte[] decode = Base64.decodeBase64(encode);
System.out.println(decode.toString());

我无法说出什么问题。我尝试了所有可能的组合。设置charset,ToString,无肿胀。该编码完美地工作。我可以将该数字扔进Web解码器,并每次获得正确的值。只是无法让这个工作。

输出:

 run:
SGVsbG8= (encode)

[B@1fb8ee3  (decode)

如果我使用循环并手动将字符添加到字符串中,我可以使它起作用。但是我以为Tostring为我做了吗?

有帮助吗?

解决方案

直接问题是如何将字节数组转换为字符串。

反试试:

System.out.println(new String(decode));

然而, ,通常是一个坏主意 String.getBytes() 或者 new String(byte[]) 没有指定字符编码。他们使用平台默认编码,这立即表示您的代码无法便携式 - 或至少您的数据不是。我建议您使用常用编码,例如UTF-8。

其他提示

toString() 在数组上不做您期望的事情...只是默认 toString() 实施 Object, ,它根据对象的哈希码返回字符串。尝试 new String(decode).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top