输入struct struct to integer c

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

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

  1. word.part1 = 0;
  2. word.part2 = 9;
  3. word.part3 = 0;

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

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

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

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

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

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

解决方法

  1. union Ints {
  2. struct {
  3. int part1 : 10;
  4. int part2 : 6;
  5. int part3 : 16;
  6. } word;
  7. uint32_t another_way_to_access_word;
  8. };

可能有帮助

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