将多个整数打包成一个 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 字段中,类似于 this question.
非常感谢任何帮助。
你可能想要这个:
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;
从这里你应该能够弄清楚如何进行逆转换。如果没有,post另一个问题。
我想按以下顺序将以下数字打包到 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 字段中,类似于 this question.
非常感谢任何帮助。
你可能想要这个:
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;
从这里你应该能够弄清楚如何进行逆转换。如果没有,post另一个问题。