当我执行以下请求时:在Periscope应用程序中POST https://signer.periscope.tv/sign HTTP / 1.1,它会生成3个时间戳。
以下是这些时间戳的3个示例,但我无法弄清楚它们的含义。
我知道3号码始终是Linux时间戳,但是1& 2它们与Linux时间戳有什么关系?
什么是“tpForBroadcasterFrame”以及如何与时间戳相关?
3时间戳:1447440545
#
3时间戳:1447440553
#
答案 0 :(得分:2)
前两个看起来是Network Time Protocol时间戳。第三个更准确地称为POSIX时间戳。
NTP将数据存储在无符号的64位整数中,表示自1900年以来的32位秒和32位小数秒,所以...
屏蔽15704244410975025152的前32位,自1900年以来提供3656429334秒。其他32位没有映射到POSIX时间戳,因为其最小分辨率为1秒。
从3656429334减去2208988800,the number of seconds between 1900 and 1970给出自Posix时代以来的1447440534秒,或者2015年11月13日星期五18:48:54 GMT
快速入侵代码:
#include <iostream>
constexpr uint64_t epochdelta = 2208988800L; // number of seconds between 1900 and 1970
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;
}