c++11 - 如何将64位整数拆分为2个32位整数?

标签 c++11

美好的一天!我已经在寻找问题的解决方案,但找不到任何解决方案...至少所有提出的解决方案都不适合我...或者我做错了...

我有 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/

相关文章:

c++ - 嵌套的 unique_ptr 和 STL 容器

c++ - 使用一个数字数据成员为类定义所有比较运算符的便捷方法?

c++ - 可变参数/非可变参数模板之间的函数类型衰减不一致?

c++ - 在构造函数中初始化静态函数指针

c++ - 是否有从另一个 namespace 内部定义成员的解决方法?

c++ - 向 C++11 线程应用程序添加集群功能

c++ - 内联函数参数传递

c++ - 头尾打印比检查结束或开始更有效吗?

c++ - 用 ASCII 空格初始化模板<size_t N> std::array<char, N>?

c++ - 将 vector 传递给线程