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

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

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

Ответы

Ответ 1

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

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

Ответ 2

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

Далее выработайте System.Text.Encoding, который соответствует. My Core.NET refcard описывает большинство общих и как получить экземпляр (например, статическим свойством Encoding или путем вызова a Encoding.GetEncoding.

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

Ответ 3

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

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

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

ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8

Ответ 4

Вот так:

    string test = "text";
    byte[] arr = Encoding.UTF8.GetBytes(test);