Вы можете использовать эту процедуру для преобразования вашего 64-битного значения в структуру time_t
time_t FileTimeToUnixTime(FILETIME& ft)
{
ULARGE_INTEGER li;
assert(sizeof(ULARGE_INTEGER) == sizeof(FILETIME));
memcpy(&li, &ft, sizeof(FILETIME));
li.QuadPart -= 116444736000000000;
li.QuadPart /= 10000000;
return (time_t)(li.LowPart);
}
Конечно, это будет работать только в том случае, если ваш FILETIME действительно находится в диапазоне time_t. Я полагаю, вы знаете, что делать с полученным time_t.
32-битная система не помешает вам читать 64-битные как двоичные значения. Если вы предпочитаете scanf, вы можете использовать формат "% llu".