我有一个缓冲区,其中包含不同位大小的数据(8位字段,然后是4位字段,然后是9位字段...)。
我需要读取它。如果有一些库可以使用指向位级别而不是字节级别的指针进行读取,那将是很好的。
将缓冲区复制到结构体中不是一个选项,因为经过调查,我需要使用#pragma pack()或类似的东西,并且不可移植。
有什么想法吗?
编辑:我将尝试用一个示例来解释我的问题的重要性:
我需要读取它。如果有一些库可以使用指向位级别而不是字节级别的指针进行读取,那将是很好的。
将缓冲区复制到结构体中不是一个选项,因为经过调查,我需要使用#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
,然后进行操作。但是在之前的问题中,有人告诉我这不是一个好的解决方案,因为它不够通用。如果有更好的建议可以帮助我,我很愿意听取不同的意见。
pragma pack
。 - Kiril Kirov