Android 潜望镜时间戳

Android 潜望镜时间戳,android,c++,Android,C++,当我执行以下请求时:在潜望镜应用程序中发布HTTP/1.1,它会生成3个时间戳 下面是这些时间戳的3个示例,但我无法理解它们的含义 我知道数字3总是Linux时间戳,但是1和2是什么,它们与Linux时间戳有什么关系 什么是“tpForBroadcasterFrame”以及它与时间戳的关系如何 1台ntpForBroadcasterFrame:1570424410975025152 2 NTP或活动框架:15704244125303865344 3时间戳:1447440545 # 1台ntpF

当我执行以下请求时:在潜望镜应用程序中发布HTTP/1.1,它会生成3个时间戳

下面是这些时间戳的3个示例,但我无法理解它们的含义

我知道数字3总是Linux时间戳,但是1和2是什么,它们与Linux时间戳有什么关系

什么是“tpForBroadcasterFrame”以及它与时间戳的关系如何

  • 1台ntpForBroadcasterFrame:1570424410975025152
  • 2 NTP或活动框架:15704244125303865344
  • 3时间戳:1447440545

    #

  • 1台ntpForBroadcasterFrame:1570424443861590016
  • 2 NTP或活动框架:15704244125303865344
  • 3时间戳:1447440553

    #

  • 1台ntpForBroadcasterFrame:1570424474141110272
  • 2 NTP或活动框架:15704244125303865344
  • 3时间戳:1447440560
前两个看起来像是时间戳。第三个更准确地称为POSIX时间戳

NTP以无符号64位整数存储数据,该整数表示自1900年以来的32位秒和32位小数秒,因此

掩蔽1570424410975025152的前32位会给出自1900年以来的3656429334秒。其他32位没有映射到POSIX时间戳,因为其最小分辨率为1秒

从3656429334中减去2208988800,得到自Posix纪元(即2015年11月13日星期五18:48:54 GMT)以来的1447440534秒

快速黑客代码:

#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;
}
#包括
constexpr uint64\u t epochdelta=2208988800L;//1900和1970之间的秒数
int main()
{
uint64_t num=1570424410975025152ull;
uint32秒=(uint32秒)(数值>>32);
标准::cout