假设我有一个字符串
string hex = "55 6E 6B 6E 6F 77 6E 20 53 70 61 63 65"
我想将这些写到文件中,但是它们应该是字节本身。 因此结果将是“未知空间”。
有什么方法可以直接将其写入encoding
而不是首先utf-8
并将其写入文件吗?我要问的原因是,有时utf-8
中有一个特殊字符(例如0xE28780
),如果我先将字符串分成每个值的字符,这将无法正常工作。 / p>
非常感谢!
答案 0 :(得分:7)
带有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);
返回一个字符串数组,该数组包含此实例中的子字符串 由指定的字符串或Unicode元素分隔的 字符数组。
Convert.ToByte Method (String, Int32)
将指定基数中的数字的字符串表示形式转换为 等效的8位无符号整数。
为文件提供流,同时支持同步和 异步读写操作。
File.WriteAllBytes Method (String, Byte[])
创建一个新文件,将指定的字节数组写入该文件,然后 然后关闭文件。如果目标文件已经存在,则为 覆盖。