EDIT (2018): Jawaban saudara yang diedit oleh @xinyongCheng adalah pendekatan yang lebih sederhana, dan harus menjadi jawaban yang diterima.
Pendekatan Anda akan masuk akal jika Anda mengetahui bahwa byte-byte tersebut ada di charset default platform. Dalam contoh Anda, ini benar karena k.getBytes()
mengembalikan byte dalam rangkaian karakter default platform.
Lebih sering, Anda ingin menentukan pengkodean. Namun, ada cara yang lebih sederhana untuk melakukannya selain pertanyaan yang Anda tautkan. String API menyediakan metode yang mengubah antara String dan array [] byte dalam pengkodean tertentu. Metode ini menyarankan penggunaan CharsetEncoder / CharsetDecoder "ketika kontrol lebih besar atas proses decoding [encoding] diperlukan."
Untuk mendapatkan byte dari String dalam encoding tertentu, Anda bisa menggunakan metode getBytes () saudara:
byte[] bytes = k.getBytes( StandardCharsets.UTF_8 );
Untuk meletakkan byte dengan pengkodean tertentu ke dalam String, Anda dapat menggunakan konstruktor String yang berbeda:
String v = new String( bytes, StandardCharsets.UTF_8 );
Perhatikan bahwa ByteBuffer.array()
ini adalah operasi opsional. Jika Anda telah membangun ByteBuffer Anda dengan sebuah array, Anda dapat menggunakan array itu secara langsung. Jika tidak, jika Anda ingin aman, gunakan ByteBuffer.get(byte[] dst, int offset, int length)
untuk mendapatkan byte dari buffer ke dalam array byte.