Как преобразовать строку в байтовый массив в .NET?
Вопрос
У меня есть строка, которую мне нужно преобразовать в эквивалентный массив байтов в .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);