我有一个缓冲区,其中包含一些不同位大小的数据(8 位字段,然后是 4 位字段,然后是 9 位字段......)。
我需要阅读它。如果有一些库允许使用位级别的指针而不是字节级别的指针来读取它,那就太好了。
将缓冲区复制到结构不是一种选择,因为在研究之后我需要使用#pragma pack()
或类似的东西,并且不能移植。
任何的想法?
编辑:我将尝试用一个例子来解释我的问题的严重性:
field1: 8 bits --> ok, get first byte
field2: 6 bits --> ok, second byte, and a mask
field3: 4 bits --> gets harder, i have to get 2 bytes, apply 2 different masks, and compose
field4
...
field 15: 9 bits ---> No idea of how to do it with a loop to avoid writing manually every single case
我能想到的唯一解决方案是复制到结构,pragma pack
然后继续。但我在之前的问题中被告知,由于可移植性,这不是一个好的解决方案。但如果它拯救我,我愿意听到不同的意见。