NTP时间转换


      NTP时间转换,百度了很久没有结果。自己试了一下可以了。

      设备上送上来数据包的时间为NTP格式,wireshark中抓包原始数据为:

      DA  E5 D0 E5


     1、通过struct.unpack,转化为整型:

     s4=struct.unpack(‘4B’,buf[0][102:106])

     结果如下:218  229  208 229


     2、每个整型转换为16进制的字符串,并拼接起来,结果如下:

      t1=str(hex(s4[0]))

     Temp=’0xda0xe50xd00xe5’

     通过temp=temp.replace(‘0x’,’’),删除‘0x,结果如下:

     ‘dae5d0e5’


     3、转化为10进制数据,

      Timestamp = int(temp,16)

      结果:3672494309


     4、通过datetime的函数,转换为datetime

      dateArray = datetime.datetime.utcfromtimestamp(timestamp)


      5、上述时间上,年还需要减去70(NTP时间从1900/1/1 00:00:00开始算,而utc时间从1970年开始算)

     Con_time =datetime.datetime(dateArray-70,dateArray.month,dateArray.day,

      dateArray.hour,dateArray.minute,dateArray.second)

     最终获得设备时间:2016.5.17 17:18:29


你可能感兴趣的:(NTP时间转换)