【问题标题】:How to convert byte string to byte[]如何将字节字符串转换为字节[]
【发布时间】:2013-04-20 10:46:45
【问题描述】:

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

即我有一个字符串“[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你也可以在图中看到控制台日志..

【问题讨论】:

标签: java


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 感谢您的回复。这里我给出的例子只是为了展示我是如何加密文本的。我的主要问题是我有存储在字符串变量中的加密文本“[B@1a758cb”。如何将其转换为字节 []。 String.getByte[] 在这里不起作用。
  • 另见这篇文章:stackoverflow.com/questions/5499924/…这与我的问题非常相似..
  • 你没有加密任何东西。您正在将字符串编码为 base 64,然后对编码的字符串进行解码,因为您得到了原始字符串,所以它成功了。所以有什么问题?您是否阅读并理解了我的回答? String.getBytes() 将字符串转换为字节数组。什么不工作?向我们展示一段清晰的代码,告诉我们您希望它做什么,以及它会做什么。
  • 对不起..我误导你了。你是对的,我已经完成了编码。我错误地使用了“加密”这个词
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 2014-04-29
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多