读取4位而不丢失信息

时间:2012-04-23 12:32:23

标签: c# stream bits

我遇到了一个似乎无法解决的问题。 我有一种文件“ASDF”,在他们的标题中,我可以获得必要的信息来阅读它们。问题是其中一个“字段”只有4位长。

所以,让我们说它是这样的:

  • 从第0位到第8位,它是当前节点的索引(我已经读过)
  • 从8到16,它是下一个节点的索引(也请阅读此内容)
  • 从第16位到第20位内容的长度(字符串等)

所以我的问题是,如果我尝试用字节读取器读取“长度”,我将丢失4位信息,或者将“4位关闭”。有没有办法只读4位?

1 个答案:

答案 0 :(得分:1)

您应该在读取其他字节时读取此字节,然后应用0x0F

的位掩码

例如

byte result = (byte)(byteRead & 0x0F);

这将保留结果中的低4位。

如果所需的位是高四,那么你可以应用移位运算符

byte result = (byte)((byteRead & 0x0F) >> 5);