我需要定义一个结构,该结构具有大小为2位和6位的数据成员。
我应该为每个成员使用char
类型吗?还是为了不浪费内存,我可以使用:2
\:6
表示法吗?
我怎样才能做到这一点?
我可以为2位或6位类型定义typedef吗?
最佳答案
您可以使用类似:
typedef struct {
unsigned char SixBits:6;
unsigned char TwoBits:2;
} tEightBits;
然后使用:
tEightBits eight;
eight.SixBits = 31;
eight.TwoBits = 3;
但是,老实说,除非您必须遵守应用程序外部的打包数据,否则您将面临内存不足的情况,通常这种节省内存的做法是不值得的。如果您不必始终使用按位和移位操作对数据进行打包和打包,就会发现代码的速度要快得多。
另外请记住,使用
_Bool
,signed int
或unsigned int
以外的任何类型都是实现的问题。具体来说,unsigned char
可能无法在所有地方使用。关于c++ - 2位大小可变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14600153/