将String值转换为bytearray java

时间:2014-03-14 17:23:35

标签: java string object casting bytearray

我有一个字符串,其中包含字节数组的String值,例如像[B @ 42031498] 我想将String内容检索为byte[]?我怎么能这样做?

PS:使用String.getBytes()方法转换字符串不起作用。它转换字符串但不会将值作为字节数组给出。它有效like this

如果不可能有一种方法可以从java中的Object获取byte [](并且始终没有转换)

4 个答案:

答案 0 :(得分:1)

  

使用String.getBytes()方法转换字符串不起作用。它转换字符串,但不会将值作为字节数组。

Yes it does

你有两个问题:

  • 你试着直接打印阵列;你应该使用Arrays.toString(),否则调用数组本身的.toString()方法;
  • 您没有指定编码;你应该真正使用.getBytes(StandardCharsets.UTF_8)在所有环境中获得相同的结果。

以相同的方式,应使用正确的编码来完成从字节数组构建字符串:new String(array, StandardCharsets.UTF_8)

答案 1 :(得分:0)

如下所示迭代字节数组,您将获得字节值:

        for (byte b : bytes) {
            System.out.println(b);
        }

由于Object类toString()方法而得到的输出B@42031498

public String toString()
  {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
  }

答案 2 :(得分:0)

你做了什么:

 byte[] array = ....
 String result = array.toString();

你(可能)想要什么:

 String result = new String(array, "UTF-8");

答案 3 :(得分:0)

如果[B@42031498已经保存到String中,则无法将其恢复到原始字节数组。请看以下示例:

String str = "[B@42031498";
byte[] ba = str.getBytes();

String s = new String(ba);
System.out.println(s);

这将输出[B@42031498