所以我想说我有以下几个值:
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字符串而不是我想要的。
答案 0 :(得分:4)
使用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);
}
}
}
<强>结果:强>