将位域转换为int

我有这样一种方式:
typedef struct morder {
    unsigned int targetRegister : 3;
    unsigned int targetmethodOfAddressing : 3;
    unsigned int originRegister : 3;
    unsigned int originMethodofAddressing : 3;
    unsigned int oCode : 4;
} bitset;

我也有int数组,我想从这个数组中获取int值,表示这个位字段的实际值(这实际上是我拥有它的一部分的一些机器字,我想要int的表示形式整个字).

非常感谢.

解决方法

你可以使用联合:
typedef union bitsetConvertor {
    bitset bs;
    uint16_t i;
} bitsetConvertor;

bitsetConvertor convertor;
convertor.i = myInt;
bitset bs = convertor.bs;

或者你可以使用一个演员:

bitset bs = *(bitset *)&myInt;

或者你可以使用联合中的匿名结构:

typedef union morder {
    struct {
        unsigned int targetRegister : 3;
        unsigned int targetmethodOfAddressing : 3;
        unsigned int originRegister : 3;
        unsigned int originMethodofAddressing : 3;
        unsigned int oCode : 4;
    };

    uint16_t intRepresentation;
} bitset;

bitset bs;
bs.intRepresentation = myInt;

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...