"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cuántos bytes ocupa una cadena Java y por qué la respuesta depende de su codificación?

¿Cuántos bytes ocupa una cadena Java y por qué la respuesta depende de su codificación?

Publicado el 2024-11-08
Navegar:865

How many bytes does a Java string occupy, and why does the answer depend on its encoding?

Calcular el recuento de bytes de una cadena en Java

En Java, las cadenas se componen de caracteres, que pueden variar en su representación de bytes según la codificación elegida. Para determinar el número de bytes en una cadena, se debe considerar la codificación de caracteres utilizada para su conversión en bytes.

Recuento de bytes dependiente de la codificación

La clave para entender El recuento de bytes es que diferentes codificaciones dan como resultado diferentes tamaños de bytes para la misma cadena. Por ejemplo, una cadena codificada en UTF-8 puede requerir 1 byte por carácter, mientras que una codificada en UTF-16 puede requerir 2 bytes por carácter.

Convertir una cadena en bytes

Para calcular el recuento de bytes, podemos convertir la cadena en una matriz de bytes usando el método getBytes():

byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");

La longitud de la matriz de bytes resultante proporciona el recuento de bytes para esa codificación en particular:

int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;

Ejemplo

Considere la cadena "Hola mundo":

String string = "Hello World";

// Print the number of characters in the string
System.out.println(string.length()); // 11

// Calculate the byte count for different encodings
byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");
byte[] utf32Bytes = string.getBytes("UTF-32");

// Print the byte counts
System.out.println(utf8Bytes.length); // 11
System.out.println(utf16Bytes.length); // 24
System.out.println(utf32Bytes.length); // 44

Consideraciones

Es esencial especificar explícitamente la codificación de caracteres deseada al convertir cadenas a bytes. Confiar en los valores predeterminados puede generar resultados inesperados, especialmente cuando se trabaja con idiomas que usan caracteres que no son ASCII.

Además, tenga en cuenta que ciertas codificaciones, como UTF-8, pueden usar codificación de longitud variable para los caracteres. Esto significa que un solo carácter puede representarse mediante una cantidad variable de bytes, lo que resalta aún más la importancia de la selección de codificación.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3