Предполагая, что unsigned long long
- это 64-битный тип на вашей платформе
assert(sizeof(unsigned long) * CHAR_BIT == 32);
assert(sizeof(unsigned long long) * CHAR_BIT == 64);
// Static asserts are more appropriate in cases like this
unsigned long long Timestamp = TimestampHi;
Timestamp <<= 32; Timestamp += TimestampLo;
, а затем выведите значение Timestamp
.
То же самое, что и в одной строке
unsigned long long Timestamp = ((unsigned long long) TimestampHi << 32) + TimestampLo;
или просто
printf("%llu\n", ((unsigned long long) TimestampHi << 32) + TimestampLo);
Если вы хотите абстрагировать свой код от битовых операций, выражение можно переписать как
TimestampHi * ((unsigned long long) ULONG_MAX + 1) + TimestampLo