输入struct struct to integer c

前端之家收集整理的这篇文章主要介绍了输入struct struct to integer c前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的设计要求在32位字内的某些位中包含值.位10-15的示例必须保持值9,其余位都为0.因此,为了简单/可读性,我创建了一个包含所询问内容的细分版本的结构.
struct {
    int part1 : 10;
    int part2 : 6;
    int part3 : 16;
} word;

然后我可以将part2设置为等于请求的任何值,并将其他部分设置为0.

word.part1 = 0; 
word.part2 = 9;
word.part3 = 0;

我现在想要采用该结构,并将其转换为单个32位整数.我确实通过强制转换来编译它,但它似乎不是一种非常优雅或安全的转换数据的方式.

int x = *reinterpret_cast<int*>(&word);

如果我尝试将其转换为正常的reinterpret_cast< int>(word),我会收到以下错误

invalid cast from type 'ClassName::<anonymous struct>' to type 'int'

必须有更好的方法来做到这一点,我无法弄明白.提前致谢!

注意:必须在c风格的铸造中完成,因为标准和诸如此类…眼睛滚动

解决方法

union Ints {
  struct {
    int part1 : 10;
    int part2 : 6;
    int part3 : 16;
 } word;
 uint32_t another_way_to_access_word;
};

可能有帮助

猜你在找的C&C++相关文章