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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值