使用BinaryWriter将一个位写入二进制文件

我想将一个位写入二进制文件。

using (FileStream fileStream = new FileStream(@"myfile.bin", FileMode.Create)) using (BinaryWriter binaryWriter = new BinaryWriter(fileStream)) { binaryWriter.Write((bool)10); } 

binaryWriter.Write((bit)1);
当我使用binaryWriter.Write((bool)1) ,文件有一个字节,但我想写一个字节。 这可能吗?

您不能只在文件中存储1位。 几乎所有现代文件系统和硬件都以8位(即字节或八位字节)的段存储数据。

如果要在文件中存储位值,请将1或0存储为字节(00000001或00000000)。

不,不可能写一个位。 你必须写至少一个完整的字节。 如果您处于想要写入单个位的情况,则可以等到8位准备好写入(即将它们排队到内存中),然后写出一个完整的字节(即使用位移等来组合这些位)位到一个字节)。

也来自维基百科 :

历史上,字节是用于在计算机中编码单个文本字符的位数,因此它是许多计算机体系结构中的基本可寻址元素。

如果只写位,则可以将8位混合为单个字节。 但是不可能写一个位。

你可以通过read / modify / write来做到这一点。 你为什么要做这样的事情? 无论是什么,找到另一种方法,将位打包成字节,读/写布尔字节并将它们转换回位,使用ASCII’0’和’1′ – 除了一次读取和写入一个位之外的任何东西。