c# - 将包含十六进制值的字符串写为字节

Gin*_*sor 0 c# utf-8 filestream

假设我有一个字符串

string hex = "55 6E 6B 6E 6F 77 6E 20 53 70 61 63 65"
Run Code Online (Sandbox Code Playgroud)

我想将这些写入文件,但它们应该是字节本身.所以结果将是未知空间.

有没有办法直接这样做,而不是先将encodingutf-8写入文件?我要问的原因是,如果我首先将字符串拆分为每个值的字符,有时候utf-8(例如0xE28780)中的特殊字符不会很好.

非常感谢!

AAA*_*ddd 7

string.Split,Convert.ToByteFileStreamFile.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);
Run Code Online (Sandbox Code Playgroud)

String.Split方法

返回一个字符串数组,该数组包含此实例中由指定字符串或Unicode字符数组的元素分隔的子字符串.

Convert.ToByte方法(String,Int32)

将指定基数中的数字的字符串表示形式转换为等效的8位无符号整数.

FileStream类

为文件提供Stream,支持同步和异步读写操作.

File.WriteAllBytes方法(String,Byte [])

创建一个新文件,将指定的字节数组写入该文件,然后关闭该文件.如果目标文件已存在,则会被覆盖.