-1

我有一个字符串,其中包含字节数组的字符串值。如何将此字符串转换为字节数组?我是如何尝试的:

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

getByteArrayAsString方法应该返回结果 String: 33321232,所以与stringValue. (这是我的方法,它是有效的,但如何获得bytes?)

谢谢!

4

3 回答 3

3

我有一个字符串,其中包含字节数组的字符串值。

这从一开始就不清楚。如果您已将二进制数据转换为文本,您是如何做到的?这应该指导您如何转换回来。例如,如果您从任意二进制数据(例如某种形式的图像)开始,那么通常您希望使用 base64 或十六进制转换为字符串。如果您从文本数据开始,那就另当别论了。

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

其他答案建议使用new String(byte[])and 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)

如果您不指定编码,它将使用平台默认编码,这通常不是您想要的。您需要考虑要使用哪种编码。

使用 aCharset来指定编码比仅使用字符串更清晰 -StandardCharsets如果您使用的是 Java 7,请注意这一点,例如

byte[] bytes = stringValue.getBytes(StandardCharsets.UTF_8);
System.out.println(new String(bytes, StandardCharsets.UTF_8);
于 2013-11-07T11:36:54.660 回答
0

尝试像这样调用 getBytes()

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

有关更多信息,请查看oracle 文档

于 2013-11-07T11:35:39.127 回答
-2

尝试这个

 String result = new String(bytes);
 System.out.println(result);
于 2013-11-07T11:35:41.077 回答