C#:将值写入二进制(.bin)文件格式

所以我要说我有以下价值观:

HEADER01 48 45 41 44 45 52 30 31 06/17/14 30 36 2F 31 37 2F 31 34 1.0 31 2E 30 0x0000 00 0x0027 27 0x0001 01 0x0001 01 0x0001 01 0x0001 01 0x0028 28 192 C0 168 A8 1 01 1 01 
  • 前3个值是STRINGS,应转换为ASCII HEX值,然后写入.bin文件

  • 接下来的7个值是HEX,应该在.bin文件中写入AS-IS

  • 最后4个值是INTEGERS,应该转换为HEX,然后写入.bin文件

    OUTPUT(.bin)文件应如下所示:

     00000000 48 45 41 44 45 52 30 31 30 36 2F 31 37 2F 31 34 00000010 31 2E 30 00 27 01 01 01 01 28 C0 A8 01 01 00 00 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

是否可以使用C#.NET创建这样的(.bin)文件?

我尝试了BinaryWriter,StreamWriter,但由于某种原因,所有的值都写成HEX字符串而不是我想要的。

使用BinaryWriter是正确的解决方案。

不要陷入使用BinaryWriter.Write(String)重载的诱惑 – 它在字符串前面加上单字节长度,这不是你想要的。

另请注意,我已将每个值显式转换为(byte) 。 如果我没有这样做,编译器会选择Write(int)重载,将4个字节写入文件。

 class Program { static void Main(string[] args) { using (var s = File.OpenWrite("temp.bin")) { var bw = new BinaryWriter(s); bw.Write(Encoding.ASCII.GetBytes("HEADER01")); bw.Write(Encoding.ASCII.GetBytes("06/17/14")); bw.Write(Encoding.ASCII.GetBytes("1.0")); bw.Write((byte)0x00); bw.Write((byte)0x27); bw.Write((byte)0x01); bw.Write((byte)0x01); bw.Write((byte)0x01); bw.Write((byte)0x01); bw.Write((byte)0x28); bw.Write((byte)192); bw.Write((byte)168); bw.Write((byte)1); bw.Write((byte)1); } } } 

结果: Hex编辑器输出