目前,我正在使用MemoryStream
开发BinaryWriter
。
我有几种类型(即数据类型)的数据,我将逐一放入MemoryStream。
为了动态,我需要决定是否应该在MemoryStream中插入一些记录,并且在读取这个MemoryStream时它应该相应地读取。
例如,假设我正在插入收入记录 所以记录的格式应该是:
byte sr_No;
double grandTotal;
但是在大多数情况下,sr_No将会连续出现,除非是神圣的日子。
所以我不应该把每个记录的sr_No部分。相反,我计划为{sr_No缺席时为single bit
0,为当前日期为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上进行逐位移位(也可能是不可能的)以获得一个比特头。
或者可能有任何其他方法来实现它。
答案 0 :(得分:3)
所以我的问题是如何在MemoryStream中写入和读取(使用BinaryReader)单个位?
你不能。最小的"单位"流中的数据是一个字节。如果你有一些其他字节,你只使用了7位,你可以在该字节中包含额外的位,但是你只需要写一个额外的字节来指示还有什么。