美好的一天!我已经在寻找问题的解决方案,但找不到任何解决方案...至少所有提出的解决方案都不适合我...或者我做错了...
我有 64 位整数:
{uint64_t st0 = 1470134824450120;}
我只想获取该号码的最后 8 位数字,即 24450120
我为此做了以下工作:
uint32_t timestamp1 = 0;
uint32_t timestamp2 = 0;
timestamp2 = (uint32_t) st0;
timestamp1 = st0 >> 32;
printf("input: %" PRIu64 "\n", st0);
printf("unpacked: %" PRIu32 " %" PRIu32 "\n", timestamp2, timestamp1);
我得到的结果是:
input: 1470134824450120
unpacked: 1878767688 342292
这里出了什么问题?
请帮助我...我不是大学生,我没有任何顾问可以帮助我...
最佳答案
所以你有这个号码:1470134824450120。
其二进制表示为:
00000000000001010011100100010100 01101111111110111011100001001000
计算后,变量 timestamp2 1101111111110111011100001001000 位为十进制 1878767688,timestamp1 00000000000001010011100100010100 为 3422十进制为 92。
所以这些值是正确的。
如果想获取最后8位数字:st0 % 100000000
关于c++11 - 如何将64位整数拆分为2个32位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38718429/