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

Gun*_*hah 1 java

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

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

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

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

EDITED

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

String in = "gunjan";
byte[] byteStr = in.getBytes();
byte[] base64Encoded = Base64.encodeBase64(byteStr);
Run Code Online (Sandbox Code Playgroud)

这里base64Encoded的值是[B @ 1a758cb您还可以在图像中看到控制台日志..在此输入图像描述

JB *_*zet 6

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

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

System.out.println(Arrays.toString(byteArray));
Run Code Online (Sandbox Code Playgroud)

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

byte[] byteStr = string.getBytes("UTF8");
...
String str = new String (byteStr, "UTF8");
Run Code Online (Sandbox Code Playgroud)