2

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

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

4 回答 4

8

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

也来自维基百科

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

于 2012-04-07T19:44:48.113 回答
3

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

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

于 2012-04-07T19:46:05.223 回答
0

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

于 2012-04-07T19:47:49.037 回答
0

您可能可以通过读/修改/写来做到这一点。你为什么要做这样的事情?不管它是什么,找到另一种方法,将位打包成字节,读/写布尔字节并将它们转换回位,使用 ASCII '0' 和 '1' - 除了一次读取和写入一个位之外的几乎任何东西。

于 2012-04-07T19:49:26.600 回答