c # - написать строку, содержащую шестнадцатеричные значения в байтах - PullRequest
0 голосов
/ 30 июня 2018

допустим, у меня есть строка

string hex = "55 6E 6B 6E 6F 77 6E 20 53 70 61 63 65"

Я хочу записать их в файл, но они должны быть самими байтами. таким образом, результатом будет Неизвестное пространство.

Есть ли способ сделать это напрямую вместо encoding сначала utf-8 и записать это в файл? причина, по которой я спрашиваю, заключается в том, что иногда в (100 например, 0xE28780) есть специальный символ utf-8, который не будет работать хорошо, если я сначала разделю строку на символы каждого значения.

Большое спасибо!

1 Ответ

0 голосов
/ 30 июня 2018

с string.Split, Convert.ToByte и FileStream или File.WriteAllBytes

string hex = "55 6E 6B 6E 6F 77 6E 20 53 70 61 63 65";
var bytes = hex.Split(' ')
               .Select(x => Convert.ToByte(x, 16))
               .ToArray();

using (var fs = new FileStream(@"D:\test2.dat",FileMode.Create))
   fs.Write(bytes,0,bytes.Length);

// or even easier 

File.WriteAllBytes(@"D:\test2.dat",bytes);

String.Split Method

Возвращает строковый массив, который содержит подстроки в этом случае которые ограничены элементами указанной строки или Unicode массив символов.

Метод Convert.ToByte (String, Int32)

Преобразует строковое представление числа в указанной базе в эквивалентное 8-разрядное целое число без знака.

FileStream Class

Предоставляет поток для файла, поддерживая как синхронный, так и асинхронные операции чтения и записи.

Метод File.WriteAllBytes (String, Byte [])

Создает новый файл, записывает указанный байтовый массив в файл и затем закрывает файл. Если целевой файл уже существует, он перезаписаны.

...