如何将String转换为字节数组?

时间:2013-11-07 11:33:44

标签: java string casting bytearray

我有一个String,它包含字节数组的String值。 我怎么能把这个字符串转换为字节数组? 我是怎么试的:

String stringValue="33321232"; //the bytes in String
byte[] bytes= (byte[])stringValue;
System.out.println(getByteArrayAsString(bytes));

getByteArrayAsString方法应该返回结果字符串:33321232,因此stringValue也是如此。 (这是我的方法,它有效,但如何获得bytes?)

谢谢!

3 个答案:

答案 0 :(得分:3)

  

我有一个String,它包含字节数组的String值。

这一点尚不清楚。如果您已将二进制数据转换为文本,那么您是如何做到的?这应该指导你如何转换回来。例如,如果您已经开始使用任意二进制数据(例如某种形式的图像),那么通常您希望使用base64或hex转换为字符串。如果你开始使用 text 数据,则这是另一回事。

字符串不是字节数组,这就是转换失败的原因。对于基本上是文本的数据,需要在二进制文本和文本之间进行转换,应用编码(在Java中也称为charset有点令人困惑)。

其他答案建议使用new String(byte[])String.getBytes()。我强烈建议反对使用这些成员 - 使用指定编码的那些成员:

new String(byte[], String) // the string argument is the charset
new String(byte[], Charset) 

String.getBytes(String) // the string argument is the charset
String.getBytes(Charset)

如果您没有指定编码,它将使用平台默认编码,通常您想要的。您需要考虑要使用的编码。

使用Charset指定编码比使用字符串更简洁 - 如果您使用的是Java 7,则值得了解StandardCharsets,例如

byte[] bytes = stringValue.getBytes(StandardCharsets.UTF_8);
System.out.println(new String(bytes, StandardCharsets.UTF_8);

答案 1 :(得分:0)

尝试像这样调用getBytes()

String stringValue="33321232"; //the bytes in String
bytes[] b=stringValue.getBytes();

有关详情,请查看oracle docs

答案 2 :(得分:-2)

试试这个

 String result = new String(bytes);
 System.out.println(result);