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

标签 java

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

即我有一个字符串“[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.. enter image description here

最佳答案

首先,这里没有任何问题,因为解码后的字符串值 (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/

相关文章:

java - 将 JComboBox 放入 JTable 并从列表中获取元素而不是编辑单元格

java - 将 @Primary 与 spring-context-indexer 一起使用

java - byte - 2 然后下次 +2 不起作用...为什么?

java - java中的内存缓存对象

java - 上传大文件时出现OOM

java - 如何声明具有多个边界的类型类的对象

java - 二叉搜索树中的递归 toString() 方法。这个的时间复杂度是多少?

java - libgdx modelinstance 随着时间的推移平滑地转换 3d 对象

java - RxJava 中的信号边缘过滤

java - 解决两个几何实例之间的碰撞(墙壁滑动)