64,654
社区成员
发帖
与我相关
我的任务
分享
#include <assert.h>
#include <stdio.h>
UINT64 MAKEUINT64(DWORD high, DWORD low)
{
return (UINT64) ((((UINT64)((DWORD)high)) << 32) | ((UINT64)((DWORD)low)));
}
DWORD HIGHDWORD(UINT64 number)
{
return (DWORD) ((((UINT64)number) >> 32) & 0xffffffff);
}
DWORD LOWDWORD(UINT64 number)
{
return (DWORD) (((UINT64)number) & 0xffffffff);
}
int
main(int argc, char *argv[])
{
UINT64 number;
DWORD high;
DWORD low;
number = 0x0123456789abcdef;
high = HIGHDWORD(number);
low = LOWDWORD(number);
assert(high == 0x01234567);
assert(low == 0x89abcdef);
number = MAKEUINT64(high, low);
assert(number == 0x0123456789abcdef);
number = 0xfedcba9876543210;
high = HIGHDWORD(number);
low = LOWDWORD(number);
assert(high == 0xfedcba98);
assert(low == 0x76543210);
number = MAKEUINT64(high, low);
assert(number == 0xfedcba9876543210);
return 0;
}