如何将字节字符串转换为byte []

时间:2013-04-20 10:46:45

标签: java

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

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

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

我该怎么做?我是否必须迭代字节字符串中的每个字符并将它们转换为byte [] ??

已编辑

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

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

此处base64Encoded的值为 [B @ 1a758cb 您还可以在图片中看到控制台日志.. enter image description here

1 个答案:

答案 0 :(得分:6)

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

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

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

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

byte[] byteStr = string.getBytes("UTF8");
...
String str = new String (byteStr, "UTF8");