使用BinaryWriter在MemoryStream中添加单个位

时间:2016-05-05 05:44:05

标签: c# binary bit memorystream

目前,我正在使用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上进行逐位移位(也可能是不可能的)以获得一个比特头。

或者可能有任何其他方法来实现它。

1 个答案:

答案 0 :(得分:3)

  

所以我的问题是如何在MemoryStream中写入和读取(使用BinaryReader)单个位?

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