我遇到了将字节字符串转换为字节数组的转换问题。
即我有一个字符串“[B@1a758cb”。这是主字符串“gunjan”的 Base64 加密字符串。这里为了解密,我想将该加密的字节字符串转换为 byte[]。
但是 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 也可以看到图中的console log..
最佳答案
首先,这里没有任何问题,因为解码后的字符串值 (gunjan) 等于原始值 (gunjan)。
您对为中间字节数组打印的内容感到困惑。如注释中所述,字符串 [@Bxxxx
是对字节数组调用 toString() 的结果。这不是显示字节的值,而是显示数组的类型 ([@B
),后跟数组对象的 hashCode。如果要显示字节值,请使用
System.out.println(Arrays.toString(byteArray));
但是您有一个潜在的错误:您正在使用默认编码将字符串转换为字节,反之亦然。此编码可能无法支持字符串中的每个字符。您应该使用支持地球上所有字符的特定编码,例如 UTF8:
byte[] byteStr = string.getBytes("UTF8");
...
String str = new String (byteStr, "UTF8");
关于java - 如何将字节字符串转换为字节[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16119436/