Eri*_*man 1 .net c# binary hex binaryfiles
所以可以说我有以下值:
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
Run Code Online (Sandbox Code Playgroud)
前 3 个值是 STRINGS,应转换为 ASCII HEX 值,然后写入 .bin 文件
接下来的 7 个值是 HEX,应按原样写入 .bin 文件
最后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
Run Code Online (Sandbox Code Playgroud)是否可以使用 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
