UNIX 整数格式的确有允许负数存在的版本,然而苹果凑巧目前没有在 64 位 iOS 设备的 UNIX 时间系统里采用这个版本,也就遇到了 1970 年的变砖 Bug…… 随便抓起手边任何一个智能设备(比如你的 64 位 iPhone),尝试把系统时间往最早调(千万别真的调),你会发现绝大多数的最早时间限制都在 1970 年 1 月 1 日。正如前面第一个小章节提到的,这是 UNIX 时间的起点,也是你的 iPhone 能够正确显示的最早时间。
系统时间调到 1970 年 1 月 1 日 0 时 0 分 0 秒,这个操作从计算机原理上本身不会直接导致你的 iPhone 变砖。可一旦你的手机里存储了之前的短信、电子邮件,或者已经过期的日历项,这会导致系统在追溯时间时最终定位到了一个比 1970 年 1 月 1 日 0 时 0 分 0 秒更早的时间。 这样,你的 iPhone 的 UNIX 时间变成了一个负整数——也就是在二进制数 64 个 0 的基础上,发生了一次整数下溢…… 接下来,iPhone 会发现你老婆一秒钟前给你发来的短信,发生在二进制 64 个 1 所代表的 UNIX 时间中。换算成人类的时间,也就是 292277026596 年 12 月 4 日 15 时 30 分 6 秒。 可能由于苹果公司 iPhone 在设计的时候根本没想过这台设备能在大约 8000 年以后开机,也就显示不了超过五位数的年份,更别提一个十二位数的年份了。 因此,你的 iPhone,就这样变砖了。换句话说,你的 iPhone,跪倒在永生的宇宙万物面前了。 (责任编辑:本港台直播) |