所以我有3个数字。一个是 a char
,另外两个是int16_t
(也称为short
s,但根据表格我发现短裤不会可靠地为 16 位)。
我想将它们连接在一起。所以说他们的价值观是:
10010001
1111111111111101
1001011010110101
我想最终long long
包含:
1001000111111111111111011001011010110101000000000000000000000000
使用我在网上找到的一些解决方案,我想出了这个:
long long result;
result = num1;
result = (result << 8) | num2;
result = (result << 24) | num3;
但它不起作用;它在解码时给了我非常奇怪的数字。
如果我的解码代码有问题,这里是:
char num1 = num & 0xff;
int16_t num2 = num << 8 & 0xffff;
int16_t num3 = num << 24 & 0xffff;
这里发生了什么?我怀疑它与 a 的大小有关long long
,但我无法完全理解它,我希望以后有更多的数字空间。