我需要定义一个结构,该结构具有大小为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;

但是,老实说,除非您必须遵守应用程序外部的打包数据,否则您将面临内存不足的情况,通常这种节省内存的做法是不值得的。如果您不必始终使用按位和移位操作对数据进行打包和打包,就会发现代码的速度要快得多。

另外请记住,使用_Boolsigned intunsigned int以外的任何类型都是实现的问题。具体来说,unsigned char可能无法在所有地方使用。

关于c++ - 2位大小可变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14600153/

10-11 01:22