¿Cuál es el método más rápido para convertir un java.nio.ByteBuffer a
en un (recién creado) CharBuffer b
o char[] b
.Fast ByteBuffer a CharBuffer o char []
Al hacerlo, es importante que a[i] == b[i]
. Esto significa que no a[i]
y a[i+1]
juntos componen un valor b[j]
, lo que getChar(i)
haría, pero los valores deberían ser "extendidos".
byte a[] = { 1,2,3, 125,126,127, -128,-127,-126 } // each a byte (which are signed)
char b[] = { 1,2,3, 125,126,127, 128, 129, 130 } // each a char (which are unsigned)
Nota que byte:-128
tiene los mismos (inferiores 8) bits como char:128
. Por lo tanto, supongo que la "mejor" interpretación sería como lo mencioné anteriormente, porque los bits son los mismos.
Después de eso, también es necesario el viceversa traducción: La forma más eficiente para conseguir un char[]
o java.nio.CharBuffer
de nuevo en un java.nio.ByteBuffer
.
¿Qué quieres hacer con este búfer de char? ¿Qué debería pasar si pones un char de 2 bytes? ¿Cómo debería verse la matriz de bytes traducidos? Dependiendo de lo que necesite, la forma más eficiente podría ser no convertirlo en absoluto. – Ishtar
En otras palabras, ¿está buscando interpretar los contenidos del 'ByteBuffer' como una secuencia de caracteres codificados usando ISO-8859-1? – Anon
La suposición es que no hay ningún valor mayor que '0xff' en el búfer' char [] 'para back-translation. Cualquier comportamiento/bloqueo estaría bien ("no especificado"). ISO-8859-1? Por lo que sé, hay bytes que no pueden ser traducidos por ninguna página de códigos (por ejemplo '\ 0')? Creo que las numerosas bibliotecas de conversión de páginas de códigos no lo toman muy bien si se descarga un flujo de datos de 8 bits. Pero no sé sobre Java, lo buscaré. Imagina que tengo datos de imagen/imagen. – towi