2016-05-13 9 views
0

byte []からStringを作成する際に奇妙な動作に直面しています。 私はいくつかのファイルの内容を読むことでいっぱいになったバイト配列を持っています。バイト配列の特定の内容は次のとおりです。byte []から文字列を作成するときにいくつかのバイトが変更されました

Contents of my byte[]

ここでバイトの内容を[]の位置1533で-99(9D)である

今私は、このバイトから新しい文字列を作成します[]

String contents = new String(buffer, 0, bufLen); 

しかし、今、私の場合、再び次のコードを使用してバイト[]に変換してください。

byte[] newBuffer= contents.getBytes(); 

newBufferでバイトが変更されます。 Now byte at location 1533 changed

なぜこのようなことが起こったのか分かりません。これを避けるために、私は何をしなければならないのでしょうか?

よろしく、

Anuj
+0

エンコードされた文字セットと、それを読み取っている文字セットは何ですか? –

+0

同様の質問[ここ](http://stackoverflow.com/q/37202020/5221149)がありました。任意の 'byte []'を 'String'に変換することはできません。すべてのバイトが有効な文字ではなく、拒否されます( '? '、別名10進数63に変換されます)。 Stringでバイトを送信するには、HexまたはBase64エンコーディングを使用します。 Hexはサイズを2倍(3バイトは6文字になります)、Base64は4:3になります(3バイトは4文字になります)。 – Andreas

答えて

0

は、変換のための符号化を提供します。

+0

任意のバイト配列では機能しません。 – Andreas

関連する問題