1

我遇到了将字节字符串转换为字节数组的转换问题。

即我有一个字符串“ [B@1a758cb ”。即主字符串“gunjan”的Base64加密字符串。在这里为了解密,我想将加密的字节字符串转换为字节 []。

但是 String.getByte[] 对我不起作用。String.getBytes[] 给出字节字符串的字节。

我怎样才能做到这一点 ??我是否必须遍历字节字符串中的每个字符并将它们转换为 byte[] ?

已编辑

我正在使用 Apache Coded 3.1 jar 进行 Base64 转换。这是我从中获取此加密文本的代码..

String in = "gunjan";
byte[] byteStr = in.getBytes();
byte[] base64Encoded = Base64.encodeBase64(byteStr);

这里base64Encoded的值为[B@1a758cb也可以看到图中的控制台日志。。在此处输入图像描述

4

1 回答 1

6

首先,这里没有任何问题,因为解码后的字符串值 (gunjan) 等于原始值 (gunjan)。

您对中间字节数组打印的内容感到困惑。如评论中所述,字符串[@Bxxxx是在字节数组上调用 toString() 的结果。这不显示字节的值,而是显示数组的类型 ( [@B),后跟数组对象的 hashCode。如果要显示字节值,请使用

System.out.println(Arrays.toString(byteArray));

但是,您有一个潜在的错误:您正在使用默认编码将字符串转换为字节,反之亦然。此编码可能无法支持字符串中的每个字符。您应该使用支持地球上所有字符的特定编码,例如 UTF8:

byte[] byteStr = string.getBytes("UTF8");
...
String str = new String (byteStr, "UTF8");
于 2013-04-20T11:53:23.503 回答