使用二进制文件C#创建BIN文件时出错

时间:2014-08-08 15:18:34

标签: c#

我正在使用下面的代码在C#中创建二进制文件。这是相对简单的代码。 RawData变量是一个类型字符串[]。

     using (BinaryWriter bin = new BinaryWriter(File.Open("file.bin", FileMode.Create)))
        {
            foreach (string data in RawData)
            {
                int Byte = Convert.ToInt32(data, 16);
                bin.Write(Byte);


            }

        }

不幸的是,BIN文件是这样生成的。它放置正确的字节值,但随后跳过接下来的三个字节并在那里放置零,然后放置下一个字节值。有谁知道为什么会这样。我使用了debugged和bin.Write(Byte),并且这些额外的零都没有发送到这个方法。

BIN File Capture

2 个答案:

答案 0 :(得分:3)

您正在使用BinaryWriter.Write(int)。所以是的,它正在写4个字节,如记录所示。

如果您只想写一个字节,则应使用BinaryWriter.Write(byte)代替。

所以你可能只想要:

bin.Write(Convert.ToByte(data, 16));

或者,将整个工作分为两行:

byte[] bytes = RawData.Select(x => Convert.ToByte(x, 16)).ToArray();
File.WriteAllBytes("file.bin", bytes);

答案 1 :(得分:2)

尝试

var Byte = Convert.ToByte(....)

代替。

您正在转换为int,每个都是4个字节。所以,你看到其中三个都是零,而int的一个字节就是你期望的值。