in

Bytes de una cadena en Java

apple touch icon@2

Una cadena es una lista de caracteres (es decir, puntos de código). El número de bytes que se toman para representar la cadena. depende completamente de la codificación que use para convertirla en bytes.

Dicho esto, puede convertir la cadena en una matriz de bytes y luego mirar su tamaño de la siguiente manera:

// The input string for this test
final String string = "Hello World";

// Check length, in characters
System.out.println(string.length()); // prints "11"

// Check encoded sizes
final byte[] utf8Bytes = string.getBytes("UTF-8");
System.out.println(utf8Bytes.length); // prints "11"

final byte[] utf16Bytes= string.getBytes("UTF-16");
System.out.println(utf16Bytes.length); // prints "24"

final byte[] utf32Bytes = string.getBytes("UTF-32");
System.out.println(utf32Bytes.length); // prints "44"

final byte[] isoBytes = string.getBytes("ISO-8859-1");
System.out.println(isoBytes.length); // prints "11"

final byte[] winBytes = string.getBytes("CP1252");
System.out.println(winBytes.length); // prints "11"

Como puede ver, incluso una simple cadena «ASCII» puede tener un número diferente de bytes en su representación, dependiendo de la codificación que se utilice. Utilice el conjunto de caracteres que le interese para su caso, como argumento para getBytes(). Y no caiga en la trampa de asumir que UTF-8 representa cada carácter como un solo byte, ya que eso tampoco es cierto:

final String interesting = "uF93DuF936uF949uF942"; // Chinese ideograms

// Check length, in characters
System.out.println(interesting.length()); // prints "4"

// Check encoded sizes
final byte[] utf8Bytes = interesting.getBytes("UTF-8");
System.out.println(utf8Bytes.length); // prints "12"

final byte[] utf16Bytes= interesting.getBytes("UTF-16");
System.out.println(utf16Bytes.length); // prints "10"

final byte[] utf32Bytes = interesting.getBytes("UTF-32");
System.out.println(utf32Bytes.length); // prints "16"

final byte[] isoBytes = interesting.getBytes("ISO-8859-1");
System.out.println(isoBytes.length); // prints "4" (probably encoded "????")

final byte[] winBytes = interesting.getBytes("CP1252");
System.out.println(winBytes.length); // prints "4" (probably encoded "????")

(Tenga en cuenta que si no proporciona un argumento de juego de caracteres, la plataforma juego de caracteres predeterminado se utiliza. Esto puede ser útil en algunos contextos, pero en general debe evitar depender de los valores predeterminados y siempre use un juego de caracteres explícito cuando se requiera codificación / decodificación).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

rom

Computadora – Memoria de solo lectura

Zvc7QbHvVwC8xfVUheLgnY 1200 80

Según los informes, la nueva película de Superman ambientada en su propio universo y se inspira en los cómics originales de Superman