将Java byte []解释为String

时间:2013-05-30 22:43:09

标签: java encoding type-conversion

我有一个字节数组b:

b = [-98, -99]

我需要将这段数据传递给一个函数。该函数采用String(这是不可更改的)。如何让Java将b中的原始二进制数据解释为字符串而不更改b

中的任何位

编辑

这不是重复:

Converting byte array to String (Java)

因为,数组b由位[1001 1110 1001 1101]或[9E9D]组成。如果我使用

String str = new String(b, "Cp1252")

Cp1252编码没有位1001 1101或9D的序列值。所以这个函数导致str =“ž?”。二进制形式的是[1001 1110 0011 1111]或[9E3F]。请注意,该函数已经改变了我的位,这实际上破坏了我的数据。

我认为这将使用重新解释转换在C ++中完成,但在java中不存在这样的东西。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可能需要new String(b, "charset"));之类的内容,其中charset将替换为您要使用的编码。我建议使用UTF-8,但您的值不是UTF-8。

答案 1 :(得分:0)

你不能用任意值的任意字节来做这个,因为没有允许的编码,我假设你无法控制数据的解码。如果你可以控制解码和编码,你可以编写自己的Charset,这样你就可以将数据映射到普通的Java字符串中,然后从普通的Java字符串中复制出来,编码为UTF- 16。编码:

String str = new String(byteBuffer, MyCharSet);

解码它:

byte[] byteBuffer = str.getBytes(MyCharSet);