編集(2018): @xinyongChengによる編集された兄弟の回答はより単純なアプローチであり、受け入れられる回答でなければなりません。
バイトがプラットフォームのデフォルトの文字セットに含まれていることがわかっている場合、このアプローチは妥当です。あなたの例では、これは本当ですk.getBytes()
は、プラットフォームのデフォルトの文字セットでバイトを返すです。
より頻繁には、エンコーディングを指定する必要があります。ただし、リンクした質問よりも簡単な方法があります。String APIは、特定のエンコーディングでStringとbyte []配列の間で変換するメソッドを提供します。これらのメソッドは、「デコード[エンコード]プロセスをさらに制御する必要がある場合」に CharsetEncoder / CharsetDecoderを使用することを推奨しています。
特定のエンコーディングで文字列からバイトを取得するには、兄弟のgetBytes()メソッドを使用できます。
byte[] bytes = k.getBytes( StandardCharsets.UTF_8 );
特定のエンコーディングのバイトを文字列に入れるには、別の文字列コンストラクタを使用できます。
String v = new String( bytes, StandardCharsets.UTF_8 );
注ByteBuffer.array()
任意のオペレーションです。ByteBufferを配列で作成した場合は、その配列を直接使用できます。それ以外の場合、安全を確保したい場合は、を使用ByteBuffer.get(byte[] dst, int offset, int length)
してバッファからバイト配列にバイトを取得します。