【发布时间】:2017-05-26 03:29:11
【问题描述】:
我正在尝试将两个 32 位值复制到一个 64 位地址中。 一个 DWORD 是高 32 位,第二个是低 32 位。 我尝试了以下方法,但 64 位值中的移位操作数不起作用:
UINT64 a = 0x12341234;
UINT64 b = 0x00003800;
我需要的值是: 0x0000380012341234
所以我做到了:
printf("b 0x%016x\n", b);
b = ((UINT64)b) << 20;
printf("b 0x%016x\n", b);
和我得到的照片:
b 0x0000000000003800
b 0x0000000080000000
我尝试切换到不同的数字(再次是 10 和 10,或 32,或 0x20),但没有任何效果。
为什么转移到 UINT64 的高 32 位不起作用,我还能怎么做?
【问题讨论】:
-
将
%016x更改为%016llx -
班次工作正常,问题在于打印。