-
好奇害死猫 苹果“1970事件”是什么在搞鬼
2016/2/28 8:42:48 来源:中国产业发展研究网 【字体:大 中 小】【收藏本页】【打印】【关闭】
核心提示: 近日,苹果“1970事件”闹得沸沸扬扬,有许多使用iOS设备的好奇人士“好奇害死猫”,抱着好奇的态度,结果自己的爱机真的变砖了。据了解,运行iOS8以上系统的近日,苹果“1970事件”闹得沸沸扬扬,有许多使用iOS设备的好奇人士“好奇害死猫”,抱着好奇的态度,结果自己的爱机真的变砖了。据了解,运行iOS8以上系统的64位处理器的设备几乎无一幸免,把iPhone、iPad或iPodtouch的时间设定为1970年1月1日,然后关机再开机,手机就变成一块“砖头”。下面让我们看看“1970”到底是什么“鬼”。
在了解“1970年事件”时,我们需要了解一个知识就是Unix时间戳。iOS系统时间使用Unix时间戳(Unixepoch)表示(time_t数据类型)。在系统中,使用系统位数个二进制位储存时间。Unix时间戳规定,UTC时区的1970年1月1日0点0时0秒的值为0,以秒为单位,即每过一秒,二进制数字加1。
有了这个知识储备,我们现在了解一下搭载64位处理器的iOS设备的时间bug。我们说到了以UTC时区的1970年1月1日0点0时0秒为界限,数值为0,时间正常流逝为正数,反之为负数。不过各位需要留意的是,时间受到时区的影响。
假设一种情况,我原来是北京时区,假设将时间设置到了1970年1月1日0点0时0秒,那么我将这个时间转换为UTC时间,公式:北京时间=GMT+8=UTC+8,那么UTC时间则为1969年12月31日16时0分0秒。这样就会出现时间负值,即时间回归bug触发,系统启动卡在Kernel阶段,时间错误,无法继续进行启动。
那么既然事件不能往前调,好奇的朋友可能会往后调,当我们往后调的时候会发现iOS系统可以设置的最大时间是2038年1月1日,并不能再往后设置了。为什么时间只能调到这里?
手机时间计算原理
我们了解一下在32位系统中,time_t是长度为32位的,有符号整数(signedint)类型。首个二进制位是符号位,用来储存正负。正数则为1970/1/1以后的时间,负数反之;其余的31位用来记数。当时间到达2038年1月19日3时14分08秒时,数值位全部向前进1,导致符号位被置1,其余31位为0。介时,将出现“时间回归”的情况,系统时间变为1901年12月13日20时45分52秒,系统将会出现错误。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,邮箱:cidr@chinaidr.com。 -
- 直达16个行业
- 热点资讯
- 24小时
- 周排行
- 月排行
- 名厨助阵、品质赋能,中粮餐饮供应链视角引领川菜新发展
- 杭州德川、大龙补、华中国际北京农食亮相2025EBC轻食大会
- 紫气东来·黔茶入沪 ——八步紫茶文化论坛点亮乡村振兴新未来
- 《从贵州到全国31省:京东立体助农体系激活670县经济》
- 湖南环生瑞家全屋整装实力产品,构筑品质空间新高度
- 睡眠博士首家睡眠集合店杭州盛大开业,开启一站式睡眠治愈新体验
- 宇视科技2025合作伙伴大会丨业内首次提出“AIoT智能体”新理念
- 青云租:青青时代正式成为中国商业股份制企业经济联合会常务理事单位,以循环租赁赋能可持续商业
- 金善美亮相“科技的力量”,山西机器人协会扬帆起航
- 汽车智能软件又有新突破!瑞典NIRA Dynamics以软件科技重构胎压监测,汽车制造业迎来更环保、更安全、更经济的新选