Форум сайта python.su
Всем привет! Имеется задача получить ntp метку из timestamp в данный момент времени.
Есть данные: timestamp 1447440534 и ntp 15704244410975025152, это 13 ноября 2015 18:48:54
Есть функция получения на Си:
#include <iostream> constexpr uint64_t epochdelta = 2208988800L; int main() { uint64_t num= 15704244410975025152ULL; uint32_t seconds = (uint32_t)(num >> 32); std::cout << seconds << " seconds since 1900" << std::endl; std::cout << seconds - epochdelta << " seconds since 1970" << std::endl; return 0; }
import time timestamp = int(time.time()) print timestamp # >> 1487608712 ntpstamp = int(timestamp + 2208988800) print ntpstamp # >> 3696597512
ntpstamp &= 0xfffffff0 # >> 3696597512
Отредактировано sinbad13 (Фев. 21, 2017 14:57:23)
Офлайн
sinbad13Объясните, зачем числа кастовать к строке и сразу же к числу. Этому есть рациональное объяснение?
ntpstamp = int(str(timestamp + 2208988800))
Офлайн
FishHookСначала да, там был такой код
ntpstamp = int(str(timestamp + 2208988800) + '00000000')
Офлайн
Все оказалось гораздо проще
ntpstamp32bit = (ntpstamp << 32) print ntpstamp32bit # >> 15877526162302304256
Отредактировано sinbad13 (Фев. 22, 2017 19:57:06)
Офлайн