Как преобразовать строку в байтовый массив в .NET?

StackOverflow https://stackoverflow.com/questions/241405

  •  04-07-2019
  •  | 
  •  

Вопрос

У меня есть строка, которую мне нужно преобразовать в эквивалентный массив байтов в .NET.

Это должно быть легко, но у меня болит мозг.

Это было полезно?

Решение

Вам нужно использовать кодировку ( System.Text.Encoding ), чтобы сообщить .NET, что вы ожидаете получить. Например, в UTF-16 (= System.Text.Encoding.Unicode ) :

var result = System.Text.Encoding.Unicode.GetBytes(text);

Другие советы

Сначала определитесь, какую кодировку вы хотите: вам нужно немного узнать о Юникоде первый.

Затем выясните, какой System.Text.Encoding , что соответствует. Моя основная .NET refcard описывает большинство распространенных и то, как получить экземпляр (например, статическое свойство Encoding или вызов <код> Encoding.GetEncoding .

Наконец, определите, хотите ли вы, чтобы все байты были одновременно (это самый простой способ работы - вызовите Encoding.GetBytes (string) один раз и все готово) или вам нужно разбить его на куски - в этом случае вы захотите использовать Encoding.GetEncoder , а затем немного кодируйте за раз , Кодировщик заботится о сохранении состояния между вызовами, на случай, если вам нужно разорвать, например, половину символа.

Какую кодировку вы используете? У Конрада довольно много проблем, но есть и другие, и вы можете получить глупые результаты с неправильным:

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)

Где XXX может быть:

ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8

Вот так:

    string test = "text";
    byte[] arr = Encoding.UTF8.GetBytes(test);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top