Подсчет байтов строки в Java
В Java строки представляют собой набор символов, которые могут содержать переменное количество байтов. Количество байтов, занимаемых строкой, зависит от набора символов, используемого для ее кодирования.
Получение количества закодированных байтов
Чтобы определить количество байтов в строке, вы можете преобразовать его в массив байтов, используя метод getBytes(). Этот метод принимает формат кодировки в качестве аргумента и возвращает массив байтов, заполненный закодированной строкой. Длина массива представляет количество байтов в закодированной строке.
Пример:
String string = "Hello World";
// Get UTF-8 encoded byte count
byte[] utf8Bytes = string.getBytes("UTF-8");
System.out.println(utf8Bytes.length); // prints 11
// Get UTF-16 encoded byte count
byte[] utf16Bytes = string.getBytes("UTF-16");
System.out.println(utf16Bytes.length); // prints 24
// Get UTF-32 encoded byte count
byte[] utf32Bytes = string.getBytes("UTF-32");
System.out.println(utf32Bytes.length); // prints 44
Вариации кодировки
Как видно из примера, даже строка ASCII, такая как «Hello World», может иметь разное количество байтов в зависимости от кодировки используется.
Наборы символов
При кодировании строки крайне важно выбрать соответствующий набор символов. В разных наборах символов используются разные методы представления символов в виде байтов, что приводит к разному количеству байтов.
Набор символов по умолчанию
Если вы не укажете набор символов, Java использует набор символов платформы по умолчанию. Однако рекомендуется избегать использования значений по умолчанию и явно указывать набор символов, чтобы обеспечить согласованные результаты.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3