Перейти к содержимому

Как преобразовать строку в массив байт c

  • автор:

Перевод строки в массив битов и обратно

В общем суть такова:
Я пишу на Си шарп программу, которая будет шифровать текст. То есть на входе строка. На выходе строка. Но алгоритм шифрования(пробовал DES,AES,ГОСТ28147-89) подразумевает на входе массив бит длины 64, на выходе аналогично. Пробовал работать с кодировками ASCII,UTF7,UTF8,UTF32.
Проблема в том, что не каждому массиву бит длины 64 соответствует однозначно некий текст, то есть при конвертации массива в строку и обратно на выходе имеем другой массив бит. Желательно использовать кодировку типа ANSI, когда каждому символу соответствует один байт и каждому байту однозначно один символ(биективное отображение).
Вопрос. Какое отображение строки в массив Байтов биективно?

Преобразование строки в массив байт и обратно

Для передачи строковых сообщений, их прочтения, а также ряда других задач может потребовать их преобразование в массив байт и соответственно обратно в строковый формат. Рассмотрим как данная задача решается в C#.

В .NET для подобных преобразований предусмотрен специальный класс Encoding, который содержит требуемый функционал для каждой из кодировок.

Преобразование в строку выполняется методом GetBytes, который принимает в качестве параметра исходную строку. В свою очередь обратное преобразование производится методом GetString принимающим в качестве параметра массив байт.

Ниже приведён пример преобразования в массив байт строки в кодироке UTF-8.

byte[] byteArray = System.Text.Encoding.UTF8.GetBytes("Hello, world!");

Обратное преобразование на примере той же кодировки:

string str = Encoding.UTF8.GetString(byteArray);

Таким образом, можно особого труда преобразовать в массив байт и обратно любые строковые данные.

c# — Как конвертировать строку в массив байтов

string to byte array

string to byte array

Для конвертации воспользуемся методом Encoding.GetBytes. Пример будет выглядеть следующим образом:

var text = "mirsovetov.net" // конвертация строку в массива байт byte[] buffer = System.Text.Encoding.Default.GetBytes(text); // конвертация массива байт в строку var result = System.Text.Encoding.Default.GetString(buffer);Code language: C# (cs)

Также важно знать, что для System.Text.Encoding.Default — текущая кодовая страница ANSI и результаты конвертации будут зависеть от настроек операционной системы. Если вы знаете какая кодировка использовалась изначально — лучше использовать ее. Для Utf8 можно воспользоваться методом UTF8Encoding.GetString

var text = "mirsovetov.net" // конвертация строку в массива байт byte[] buffer = System.Text.Encoding.UTF8.GetBytes(text); // конвертация массива байт в строку var result = System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length);Code language: C# (cs)

Похожие темы:

  • C# — как проверить является ли путь файлом или каталогом?
  • ActiveMQ failover transport timeout на подключение
  • С# — Как посчитать md5-хеш для файла?
  • c# — Как конвертировать массив байтов в строку
  • C# — как дублировать строку n раз
  • C# — как дублировать символ n раз

Как преобразовать строку Java в массив байтов

Преобразование строки в массив байтов — это частая задача в программировании на Java, особенно при работе с сетевыми операциями, файлами и сжатием данных. Например, вам может понадобиться преобразовать текстовую строку в массив байтов, чтобы сохранить ее в файле или отправить по сети.

String text = "Привет, мир!";

В Java для преобразования строки в массив байтов можно использовать метод getBytes() , который встроен в класс String . Этот метод преобразует все символы строки в последовательность байтов и возвращает эту последовательность в виде массива.

byte[] bytes = text.getBytes();

Однако при выводе массива байтов на экран вы обнаружите, что результат выглядит не так, как ожидалось. Вместо ожидаемых байтов вы увидите что-то вроде «[B@6d06d69c». Это происходит потому, что метод toString() для массивов в Java возвращает не содержимое массива, а его хеш-код.

System.out.println(bytes.toString()); // выводит что-то вроде "[B@6d06d69c"

Чтобы получить строковое представление массива байтов, вы можете использовать класс Arrays и его метод toString() . Этот метод преобразует массив в строковое представление, в котором элементы массива разделены запятыми и пробелами.

System.out.println(Arrays.toString(bytes)); // выводит что-то вроде "[72, 105, 118, 101, 116]"

Также стоит помнить, что метод getBytes() использует платформенно-зависимую кодировку символов по умолчанию. Это может привести к непредсказуемым результатам, если ваш код будет выполняться на разных платформах с разными кодировками по умолчанию. Чтобы избежать этой проблемы, вы можете явно указать кодировку при вызове getBytes() , например «UTF-8».

byte[] bytes = text.getBytes("UTF-8");

Таким образом, преобразование строки в массив байтов в Java — это простая задача, которую можно выполнить с помощью встроенных методов класса String .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *