EDITAR (2018): La respuesta de hermanos editada por @xinyongCheng es un enfoque más simple y debería ser la respuesta aceptada.
Su enfoque sería razonable si supiera que los bytes están en el juego de caracteres predeterminado de la plataforma. En su ejemplo, esto es cierto porquek.getBytes()
devuelve los bytes en el juego de caracteres predeterminado de la plataforma.
Con más frecuencia, querrá especificar la codificación. Sin embargo, hay una forma más sencilla de hacerlo que la pregunta que vinculó. La API de cadena proporciona métodos que convierten entre una cadena y una matriz de bytes [] en una codificación particular. Estos métodos sugieren usar CharsetEncoder / CharsetDecoder "cuando se requiere más control sobre el proceso de decodificación [codificación]".
Para obtener los bytes de una cadena en una codificación particular, puede usar un método hermano getBytes ():
byte[] bytes = k.getBytes( StandardCharsets.UTF_8 );
Para poner bytes con una codificación particular en una cadena, puede usar un constructor de cadena diferente:
String v = new String( bytes, StandardCharsets.UTF_8 );
Tenga en cuenta que ByteBuffer.array()
es una operación opcional. Si ha construido su ByteBuffer con una matriz, puede usar esa matriz directamente. De lo contrario, si desea estar seguro, use ByteBuffer.get(byte[] dst, int offset, int length)
para obtener bytes del búfer en una matriz de bytes.