В данной статье будет рассказано о том, как преобразовывать символы в байтовую форму. За основу взят язык программирования Java. Он пользуется спросом у большинства современных разработчиков.
Из курса информатики
Перед тем, как работать с программным кодом, strings и байтами, необходимо разобраться с базовыми знаниями. А именно – с представлением данных и единицами измерений. Эти сведения изучаются еще в школах на уроках информации.
Стоит запомнить следующее:
- Самая мелкая единица измерения – это бит.
- Бит – количество данных, необходимых для однозначного определения одного из двух равновероятных событий.
- Байт – последовательности длиной 8 битов. Они приняты в информатике.
- Килобайт – 1024 байта.
- Мегабайт – один из самых известных вариантов измерения. Равен 1024 килобайта.
- Гигабайт – 1024 МБ.
- Терабайт – это 1024 гигабайта.
- В 1 бит можно записать один двоичный символ.
В ASCII в один байт записывается один 256-символьный код, а в UNICODE на него требуется 2 байта.
Информационный объем
Иногда требуется работать не со string или конкретными фразами, а просто вычислить информационный объем сообщения. Для этого потребуется количество символов умножить на биты, необходимые для хранения одного элемента.
Пробелы тоже считаются за символы. Чтобы преобразовать текст в байтовую форму, потребуется сначала представить его в двоичной кодировке. Далее – произвести необходимые расчеты. Здесь – наглядные примеры реализации соответствующей задачи.
В Java
Теперь можно приступить к работе с Java. Рассматриваемая тема тесно связана с производительностью String. Приведенные примеры помогут при разработке эффективных систем для задач в сфере телекоммуникаций.
Для того, чтобы лучше понимать производительность string и Java, рекомендуется сначала изучать Java API. После этого преобразования будут усваиваться лучше. Работа осуществляется с char и byte.
Метод GetBytes
Рассматривая производительность string и пытаясь перевести текст (слово) в bytes, нужно понимать – у Java есть для этого специализированные инструменты. Они помогают программисту to обрабатывать байтовые последовательности и сериализовать strings, а также реализовывать всевозможные протоколы.
Первый вариант – это использование метода getBytes. Он предусматривает следующие особенности:
- Относится to class String.
- Является одним из самых распространенных для преобразования String методов.
- Обладает формой getBytes(charsetName). CharsetName ссылается to кодировку String.
- Если кодировки to string нет, метод переводит string to bytes самостоятельно. В процессе используется кодировка, установленная в операционной системе «по умолчанию».
Это – один из лучших методов, которые помогают перевести информацию в желаемую форму. Он не приводит к конвертации непосредственной кодировки символов.
Пакет NIO
Перевести text to bytes в Джаве можно иначе. Пример – использование класса ByteBuffer. Он находится в пакете под названием NIO. Относится к классическим методам конвертации информации.
Примеры
Теперь можно рассмотреть наглядные примеры реализации поставленной задачи. В случае с ASCII получится такой код:
Здесь:
- Происходит создание to массив b через кастинг каждого символьного значения в байтовый эквивалент. Во внимание принимается диапазон ASCII (0-127). Каждый элемент занимает to 1 byte.
- Обратное преобразование множества информации в массиве b можно провести через конструктор new String(byte[]): .
- Для кодировки по умолчанию можно воспользоваться такой записью: .
- Каждый char будет занимать to 2 bytes. Чтобы преобразовать строчки в байтовый вид, потребуется все его элементы (буквы и символьные записи) перевести в двухбайтовый вид. А затем – обратно в str: .
- Каждый char восстанавливается из двухбайтового аналога, после чего через конструктор string(char[]) создает новый объект.
Звучит сложно, но на практике такое конвертирование знаков не слишком трудное. А вот пример возможностей NIO для решения поставленной изначально задачи:
Для конвертируемого текста можно выбрать любой из предложенных подходов. Чтобы не ошибиться, соответствующие варианты рекомендуется сравнить. Для этого используют графики.
Несколько слов о производительности
Вот – результаты проведенных тестов производительности для каждого рассмотренного метода. Сначала – работа со строчками и переводы to bytes:
И отображение обратной операции:
Абсциссы – это количество тестов, ординаты – операции в секунду для каждой «проверки». То, что находится выше, обладает большей скоростью. «Классические» методы отработали хуже. Это нормальное явление. Задействованные реализации увеличили производительность почти на 30%.
Отсюда следует вывод – для того, чтобы перевести текст в байтовый вид быстро, можно использовать самописные методы. Они приводят к увеличению скорости обработки информации на 40-45%.
Для чайников
Задумываясь над тем, как символы текста перевести в байты, можно прийти к выводу, что не все готовы программировать или производить самостоятельные подсчеты. Но выход из ситуации есть. А именно – специализированные приложения. Они называются «конвертерами».
Обычно представлены онлайн страницами. Пользователь должен:
- Написать в окне желаемый текст.
- Выбрать параметры преобразования.
- Подтвердить операцию.
Это – самый быстрый и надежный вариант для тех, кто далек от информационных технологий. Здесь возможны обратные преобразования.
А вот – еще один онлайн-конвертер. Он более совершенный. Здесь можно выставлять учет регистра, а также исключения некоторых символов.