Ответ 1
Вам нужно использовать кодировку, чтобы сообщить .NET, что вы ожидаете в качестве вывода. Например, в UTF-16:
var result = System.Text.Encoding.Unicode.GetBytes(text);
У меня есть строка, которую мне нужно преобразовать в эквивалентный массив байтов в .NET.
Это должно быть легко, но у меня есть судорога мозга.
Вам нужно использовать кодировку, чтобы сообщить .NET, что вы ожидаете в качестве вывода. Например, в UTF-16:
var result = System.Text.Encoding.Unicode.GetBytes(text);
Сначала определите, какую кодировку вы хотите: сначала вам нужно знать немного о Unicode.
Далее выработайте System.Text.Encoding
, который соответствует. My Core.NET refcard описывает большинство общих и как получить экземпляр (например, статическим свойством Encoding
или путем вызова a Encoding.GetEncoding
.
Наконец, выясните, хотите ли вы сразу все байты (это самый простой способ работы): Encoding.GetBytes(string) один раз, и все готово), или вам нужно разбить его на куски - в этом случае вы захотите использовать Encoding.GetEncoder, а затем закодировать бит за раз. Кодер позаботится о сохранении состояния между вызовами, если вам нужно, например, разбить половину пути через символ.
Какую кодировку вы используете? Konrad получил это довольно много вниз, но есть и другие, и вы можете получить тупой результат с неправильным:
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);