バイト配列を文字列に変換する方法、およびその逆の方法を教えてください。質問する

バイト配列を文字列に変換する方法、およびその逆の方法を教えてください。質問する

Android でバイト配列を文字列に変換する必要がありますが、バイト配列に負の値が含まれています。

その文字列を再度バイト配列に変換すると、取得する値は元のバイト配列の値とは異なります。

適切な変換を行うにはどうすればよいですか? 変換を行うために使用しているコードは次のとおりです。

// Code to convert byte arr to str:
byte[] by_original = {0,1,-2,3,-4,-5,6};
String str1 = new String(by_original);
System.out.println("str1 >> "+str1);

// Code to convert str to byte arr:
byte[] by_new = str1.getBytes();
for(int i=0;i<by_new.length;i++) 
System.out.println("by1["+i+"] >> "+str1);

私はこの問題に行き詰まっています。

ベストアンサー1

バイト配列には何らかのエンコードが必要です。負の値がある場合、エンコードは ASCII にできません。これを理解したら、次のコードを使用してバイト セットを文字列に変換できます。

byte[] bytes = {...}
String str = new String(bytes, StandardCharsets.UTF_8); // for UTF-8 encoding

使用できるエンコーディングは多数あります。サポートされているエンコーディングを確認してください。Oracle の Javadoc

おすすめ記事