使用 BinaryWriter 在 MemoryStream 中添加一位

adding single bit in MemoryStream using BinaryWriter

目前我正在使用BinaryWriter开发MemoryStream

我有几种类型(即数据类型)的数据,我将它们一一放入 MemoryStream。

为了动态性,我需要决定是否应将某些记录插入 MemoryStream 中,并且在读取此 MemoryStream 时应相应地读取。

例如 假设我要插入收入记录 所以记录的格式应该是:

byte sr_No; double grandTotal;

但在大多数情况下 sr_No 会连续出现,除非是节日。 所以我不应该把每条记录的 sr_No 部分。相反,我计划 single bit 0 表示 sr_No 缺席,1 表示日期存在。

所以基本上我想有一个 1 位,它将显示即将到来的字节(如 sr_No 是字节)是否包含 sr_No 或直接 grandTotal(如 sr_No被跳过) 像这样

sr_No现状:

1[1 byte of sr_No][4 bytes of grandTotal]

sr_No缺席情况:

0[4 bytes of grandTotal]

但这是不可能的,所以我可以在 MemoryStream 上进行按位移位(可能也是不可能的)以获得一位 header.

或者还有其他方法可以实现。

so my question how can I write and read (using BinaryReader) single bit to/from MemoryStream ?

你不能。流中最小的 "unit" 数据是一个字节。如果你有一些其他字节,而你只使用了 7 位,你可以在那个字节中包含额外的位,否则你只需要写一个完整的额外字节来指示还有什么。