繁体   English   中英

将多个整数打包为64位整数

[英]Packing multiple integers into a 64 bit integer

我想按以下顺序将以下数字打包到64位int64_t字段中:

  • int8_t num1
  • int8_t num2
  • int32_t num3
  • int16_t num4

因此,这64位应采用以下布局:

[  num1(8)  |  num2(8)  |       num3(32)       |   num4(16)  ]

我无法围绕位打包逻辑来解决问题,即我希望将这些数字打包到单个int64_t字段中,类似于此问题

任何帮助是极大的赞赏。

您可能想要这样:

  int8_t num1;
  int8_t num2;
  int32_t num3;
  int16_t num4;
  ...
  uint64_t number = ((uint64_t)num1 << (16 + 32 + 8)) | ((uint64_t)num2 << (16 + 32)) | ((uint64_t)num3 << 16) | (uint64_t)num4;

由此您应该能够弄清楚如何进行逆转换。 如果没有,请发布另一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM