我目前正在使用SWFFiles。 在SWF标题ist RECT中,它由5个字段构成。第一个是5比特字段(nBits - >用于指定其他字段的长度。
应该看起来像一个方法,它接受一个参数(读取了多少位)并从ifstream
读取它?
谢谢,S。
答案 0 :(得分:0)
C ++文件流是面向字节的。你不能从它们读取特定的位数(当然,除非数字是8的倍数)。
要获得5位,您必须读取整个字节,然后屏蔽掉感兴趣的8位。如果该字节还包含另一个字段,则必须将其保留以供以后使用。如果你足够通用,你可以编写自己的“比特流”类,在内部缓冲未使用的字节部分。
获取字节的低位(最低有效)5位:
unsigned char bits = byte & 0x1F; // note 0x1F = binary 00011111
获得高阶(最高有效)5位:
unsigned char bits = byte >> 3; // shift off the unused 3 low bits