使用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′ – 除了一次读取和写入一个位之外的任何东西。