Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中创建二进制文件的正确方法#_C#_Binarywriter - Fatal编程技术网

C# 在C中创建二进制文件的正确方法#

C# 在C中创建二进制文件的正确方法#,c#,binarywriter,C#,Binarywriter,我正在使用下面的代码创建一个二进制文件 var a = new[] { "C50-12-25", "C50-12-20" }; using (var bw = new BinaryWriter(File.Open("file.bin", FileMode.Create))) { foreach (var i in a) { bw.Write(i); } } 我打开文件,没有看到像这样的图片,我一直认为二进制文件应该是这样的 事实上,我

我正在使用下面的代码创建一个
二进制文件

var a = new[]
{
    "C50-12-25",
    "C50-12-20"
};

using (var bw = new BinaryWriter(File.Open("file.bin", FileMode.Create)))
{
    foreach (var i in a)
    {
        bw.Write(i);
    }
}
我打开文件,没有看到像这样的图片,我一直认为二进制文件应该是这样的

事实上,我能够阅读我所写的全部文本

C50-12-25   C50-12-20

是这样吗?我完全不熟悉这一点,因此任何能为我指明正确方向的帮助对我来说都是很大的。

您使用的
Write
重载:
BinaryWriter.Write(String)
,使用编码将您提供的字符串写出到文件中

看起来您希望通过将这些字符串解码为十六进制值来将其转换为二进制数据。。。除了它们看起来不像十六进制值,因为它们不是2的一组。无论如何,此过程记录在这里()


请注意,您发布的“图片”是一个十六进制编辑器。你没有在帖子中描述你是如何打开文件的;如果你在记事本或类似的编辑器中打开一个文件,那么你总是会得到打印出来的字符,而不是文件内容的十六进制表示。

谢谢Dai,是的,我错了,图像是十六进制文件。但我的观点是,如果我用这些方法写任何东西,它可以以某种方式读入纯文本。我说的对吗?@Vahid我认为你需要更好地理解文件的真正含义,阅读编码和“数据视图”的概念。在十六进制编辑器中打开文件时,另一个注意事项是:文件内容仅对文件长度有效。例如,如果您将4个字节写入一个文件,则前4个字节保证是正确的,但超过这4个字节则是垃圾。这与文件的存储方式有关;它们不能单独存储4个字节。@kayson如果从磁盘读取原始数据而不是使用操作系统的文件处理函数,十六进制编辑器只会显示超出文件长度的垃圾。我不认为这是一个真正的问题,自从诺顿磁盘编辑器以来,我还没有遇到过这样的十六进制编辑器。