0

私はバイトbの配列を持っています:

b = [-98, -99]

このデータのセグメントを関数に渡す必要があります。この関数は文字列を取ります (これは変更できません)。bのビットを変更せずに、Javaにbの生のバイナリデータを文字列として解釈させるにはどうすればよいですか

編集

これは次の繰り返しではありません。

バイト配列を文字列に変換する (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にはそのようなものはありません。前もって感謝します。

4

2 に答える 2

0

それを可能にするエンコーディングがないため、任意の値の任意のバイトでこれを行うことはできません。また、データのデコードを制御できないと想定しています。エンコードだけでなくデコードも制御できる場合、独自の Charset を作成して、UTF-16 としてエンコードされた通常の Java 文字列にデータをマップしたり、マップアウトしたりできるようにすることができます。エンコードするには:

String str = new String(byteBuffer, MyCharSet);

それをデコードするには:

byte[] byteBuffer = str.getBytes(MyCharSet);
于 2013-05-30T23:16:49.140 に答える