Вычисление количества байтов строки в Java
В Java строки состоят из символов, байтовое представление которых может различаться в зависимости от выбранная кодировка. Чтобы определить количество байтов в строке, необходимо учитывать кодировку символов, используемую для ее преобразования в байты.
Количество байт, зависящее от кодировки
Ключ к пониманию Количество байтов заключается в том, что разные кодировки приводят к разным размерам байтов для одной и той же строки. Например, для строки, закодированной в UTF-8, может потребоваться 1 байт на символ, а для строки, закодированной в UTF-16, может потребоваться 2 байта на символ.
Преобразование строки в байты
Чтобы вычислить количество байтов, мы можем преобразовать строку в массив байтов, используя метод getBytes():
byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");
Длина результирующего массива байтов представляет собой количество байтов для этой конкретной кодировки:
int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;
Пример
Рассмотрим строку «Hello World»:
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
Соображения
При преобразовании строк в байты важно явно указать желаемую кодировку символов. Использование значений по умолчанию может привести к неожиданным результатам, особенно при работе с языками, в которых используются символы, отличные от ASCII.
Кроме того, обратите внимание, что некоторые кодировки, такие как UTF-8, могут использовать кодировку переменной длины для символов. Это означает, что один символ может быть представлен различным количеством байтов, что еще раз подчеркивает важность выбора кодировки.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3