使用 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 位,你可以在那个字节中包含额外的位,否则你只需要写一个完整的额外字节来指示还有什么。
目前我正在使用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 位,你可以在那个字节中包含额外的位,否则你只需要写一个完整的额外字节来指示还有什么。