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

时间:2012-04-07 19:43:19

标签: c# byte bit writer 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)时,文件有一个字节,但我想写一个字节。这可能吗?

4 个答案:

答案 0 :(得分:8)

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

同样来自Wikipedia

  

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可以通过读/修改/写入来完成。你为什么要做这样的事情?无论是什么,找到另一种方法,将位打包成字节,读/写布尔字节并将它们转换回位,使用ASCII'0'和'1' - 除了一次读取和写入一个位之外的所有内容。