DÜZENLEME (2018): @ xinyongCheng tarafından düzenlenen kardeş cevabı daha basit bir yaklaşımdır ve kabul edilen cevap olmalıdır.
Baytların platformun varsayılan karakter kümesinde olduğunu bilseydiniz yaklaşımınız mantıklı olacaktır. Örneğinizde bu doğrudur çünkük.getBytes()
baytları platformun varsayılan karakter kümesinde döndürür.
Daha sık olarak, kodlamayı belirtmek isteyeceksiniz. Ancak, bunu yapmanın bağladığınız sorudan daha basit bir yolu var. String API, belirli bir kodlamada bir String ile bir bayt [] dizisi arasında dönüşüm sağlayan yöntemler sağlar. Bu yöntemler, "kod çözme [kodlama] işlemi üzerinde daha fazla kontrol gerektiğinde " CharsetEncoder / CharsetDecoder kullanılmasını önerir .
Belirli bir kodlamada bir String'den bayt almak için kardeş getBytes () yöntemini kullanabilirsiniz:
byte[] bytes = k.getBytes( StandardCharsets.UTF_8 );
Bir String'e belirli bir kodlamaya sahip baytlar koymak için farklı bir String yapıcısı kullanabilirsiniz:
String v = new String( bytes, StandardCharsets.UTF_8 );
Bunun ByteBuffer.array()
isteğe bağlı bir işlem olduğunu unutmayın . ByteBuffer'ınızı bir dizi ile oluşturduysanız, bu diziyi doğrudan kullanabilirsiniz. Aksi takdirde, güvende olmak istiyorsanız, ByteBuffer.get(byte[] dst, int offset, int length)
baytları tampondan bir bayt dizisine almak için kullanın .