研究完《长安12时辰》的望楼系统,我魔怔了
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
本文来源于微信公众号涵的硅谷成长笔记(ID:HanGrowth) , 作者: Han涵 , 钛媒体经授权发布 。
豆瓣8.6分的《长安12时辰》 , 害人不浅啊!
是的 , 我已经消失一个月了 , 就因为我去追剧了… 空闲时间都没了 , 真的 。 (才不是因为我懒)
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
终于 , 这剧今天完结 , 我也可以恢复更新了! 作为剧粉 + 科技宅 , 我今天 , 就给你深挖一下 , 这个剧里的通讯设定—— 望楼 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
它在第一集里就出现了 。 「这是望楼 , 今日于你有大用」
这是檀棋交代张小敬的第一件事 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
其实就是通讯系统 , 在长安城里传递消息 。 城内每300步就有一个望楼 , 消息转瞬 , 即可传遍整个长安城 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
我一看到这儿 , 就兴奋了! 诶?
这不就是一个 , 12位比特的通讯系统么! 你看 , 他有上下两排 , 一共12格 , 每个格子可以点亮或熄灭 。 如果点亮是1 , 熄灭是0 , 那下面这个图 , 12位就可以表示成:
101011 101100 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
有了二进制码之后 , 我们就可以编码译码了 , 也就是把「码」和「字」对应起来 。 现代计算机里 , 最基本的 , 就是用ASCII码了 , 下面是一个对照表:可以表示字母 , 数字和符号 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
比如O就是0100 1111 , M就是01001101 , G就是0100 0111 。 那么 , 李佳琦的口头禅 , 用二进制表示就是:0100 1111~ 01001101~ 0100 0111~
其实有12位bit已经很多了 , 上面的ASCII码 , 其实只要7位 。 (看上去是8位 , 但第一位都是0) 那么12位 , 其实可以表示2的12次方 , 也就是4096个汉字了 。 按照咱中国1988年出版的《现代汉语常用字表》 , 常用汉字一共也就3500个 , 可以涵盖99.48%的日常所需 , 所以12位完全足够了 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
当今计算机的汉字编码 , 比较常用的 , 比如有Unicode , 下面是一个对照表 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
在我仔细研究《十二时辰》之后 , 我发现 , 剧中其实有大小两种望楼! 一种是上面的小望楼 , 两排12格那种 , 还有一种是3*3的9宫格大望楼 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
诶?为什么有两套系统? 我个人猜测: 这是通讯系统Infra 2.0版 , 工程师正在逐步迁移(Migration) , 还没有完全结束 , 小的还没有完全弃用(Deprecated) , 所以得两套共存 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
而且 , 两套系统还可以对接 。
我去 , 居然还做了向下兼容(Backward Compatibility) 。
你可能会说 , 9宫格 , 那岂不是降低成9bit了?反而性能下降? No No No , 它其实四周还有8片花辫 , 可以分别收起和放出 , 这样就多了8位 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
加起来 , 就有9 + 8 = 17比特了 。
哦对了 , 毕竟白天和晚上的需求不同 , 它还分为“日用”和“夜用”两种模式 。 长安百姓 , 真是夜里也安心呢~
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
你可能会问 , 12bit已经够用了 , 为啥要17bit呢? 除了可以传递更多内容以外 , 还有大用:纠错 。 你知道 , 信息传递很容易出错 , 如果这12位里 , 有一个地方坏了 , 比如灯不亮了 , 或者接收方看走眼了 , 这咋办 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
你看 , 这12个格子太难读了 , 你得一个一个数 , 眼睛都要瞎了 , 随便一抖 , 就错了 。 然而 , 改成9宫格之后 , 一眼就能看对并记住 , 用户体验直线上升 , 错误率下降 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
当然 , 多出来的5个bit , 还有更高级的用法 。 这就是:计算机通讯里 , 两个经典手段:纠错码 , 和 , 冗余 。
先来看
纠错码
。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
最简单的方法 , 就是“奇偶校验法” , 也就是你多传1位 , 这位表示前面几位里面 , 应该有奇数还是偶数个1 。 如果接收的时候 , 你发现 , 最后一位告诉你 , 前面应该有偶数个1 , 结果前面是奇数个1 , 那就说明这数据有问题了 , 你得让对方再传一遍 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
如果 , 你有很多位可以用来纠错 , 比如大望楼多出了5位 , 那就可以用更高级的方法了 , 比如循环冗余校验法 。 这里有点复杂 , 但说白了就是 , 信息位和纠错位 , 两组数 , 进行运算 , 如果得出的值不对 , 那就验证失败 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
这玩意说深了就是研究生课程了 , 收 。
除了纠错码 , 还有冗余 。 有冗余 , 这本身就能纠错 。 比如 , 你规定 , 传递的一个数 , 必须所有数字 , 都是一样的才有效 。 那么 , 当你收到了比如6668666 , 那你就知道:哦 , 那个8绝对打错了 , 本来想说的应该是6666666 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
你知道 , 咱们人的DNA就有非常大的冗余 , 很多密码子貌似没啥信息 , 去掉了也完全没影响 。 这些“冗余”密码子的作用 , 一直有很多猜测 , 一种解释就是:这是防止 , 基因在自我复制时失误 , 酿成大错 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
好了 , 以上都是我的脑洞 。 在看了官方公布的资料以后 , 证明我完全是想多了~
根据官微@北斗北工作室 , 小望楼这12个框 , 其实只能代表3位 , 十进制数…
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
每四个一组 , 分别代表百位 , 十位 , 个位 , 0~9分别有不同的图案 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
比如 , 下面这个就代表序号900 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
当然了 , 阿拉伯数字这种标记法要到近代才被中国人熟练使用 , 所以当年使用的都是算筹表示法:
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
那么900 , 其实就是:
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
在编码之后 , 就可以翻译了 , 过程也很简单 , 就是查表 。 靖安司官员们 , 有这么一个袋子 , 作为密码本 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
而上面的900号 , 代表的就是“狼” , 你看就在这里 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
按照这个规律 , 其实能传递很多信息了 , 比如「张小敬」就是这样的:
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
怎么样 , 学会了吗? 来来来 , 咱们做一下课后小练习 。
练习题1: 请翻译下图 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
练习题2: 请翻译下图 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
练习题3: 熟读靖安司密码本 , 并背诵全文 。 (参考答案见文末)
以上 , 都是“靖安司公务员考试”送分题哦 。
对了 , 别忘了还有:大望楼 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
本质上也是编码成十进制的3位数 。 9宫格的空间 , 用来表示个位 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
左边的4个花瓣位 , 用来表示十位 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
右边的4个花瓣位 , 用来表示百位 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
当然 , 什么都不出现 , 就表示0 。 那么 , 下面这个 , 就表示的是701 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
不过 , 我很快发现了这个大望楼系统的两个Bug 。
Bug-1: 四宫格表示0~9我还能记住 , 可这九宫格 , 也太随意了 , 编码的人疯了 。
Bug-2: 为什么左边是高位起 , 右边是低位?
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
反人性吗?
难道不应该:左边是百位吗?
大望楼那边 , 左边的花瓣是十位 , 右边是百位 , 这是要弄死我 。 你看这个“狼” , 很容易读成900啊 , 喂 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
反正 , 这么差的用户体验 , 一般人绝对懵了 。 怪不得 , 只有我宾哥这种人肉计算机 , 才可以瞬间看懂 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
这么说来 , 望楼可以传递0到999 , 一共1000个子信息 。 可以说 , 虽然是12位比特的承载量 , 而现有的望楼系统 , 只用了四分之一 , 有75%的冗余量待开发 , 或者就是为了纠错的故意留下的 。 妙啊 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
经过我再仔细研究 , 剧中还有另一种编码方式:八卦法 。
因为卦象是三行的嘛 , 这么一看 , 我大概知道为啥剧组想用大望楼了 。
传输的时候 , 要传两遍 , 分别组成上下两组八卦 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
整合以后 , 就是一个 , 额 , 现代计算机叫:Index(索引) 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
译码时 , 用的则是开元20年 , 孙愐所修的音韵书籍《唐韵》 , 按照卷、韵、字 , 三个等级 , 依次索引 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
可是 , 这部分似乎没有在剧中用上?或者说用的不多?我咋没发现呢 。 莫非 , 这只是设想的一个方案 , 因为太复杂了 , 后来就没用上 , 官方放出来装x的?
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
厉害厉害厉害 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
对了 , 上面这套编码规范 , 可不是闹着玩的 , 它被切切实实 , 用在了剧中拍出来的 。 根据官微@北斗北工作室 , 剧中望楼每一个镜头都是对的 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
比如:
「张都尉为民捉狼 。 全城武侯、不良人随时听张都尉号令」
这句话 , 是这么传递的 。
先是跟电报一样 , 人工对信息进行压缩 , 并分割成最小信息元:
张(263)都尉(197)捉(134)狼(121) 全城(20) 武职(217) 听令(152)
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
于是 , 信息就从原来的22个汉字 , 缩短为7组信息 , 只需变换七次 。
按照每秒传两个 , 全部传完只需3.5秒 。
不过 , 如果遇到复杂信息 , 就有点蛋疼 , 比如下面这个 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
一共48个信息元…
估计接收方人脑的内存 , 是不够的吧 。 而可怜的美术老师 , 也只能小心地写上“内容精简待商榷”…
我真的要对这部良心剧竖大拇指 , 太强了 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
好了 , 以上就是望楼系统的全部了 。
最后 , 给你送上一个鸡汤:
无论遇到任何困难 , 都要迎难直上 , 不退 。
![]()
----研究完《长安12时辰》的望楼系统 , 我魔怔了//----[ http://www.caoding.cn]
推荐阅读
- 《异度神剑 终极版》日语配音与英语配音直观对比影像
- 《神田川JET GIRLS》将于夏季登陆欧美 除PS4外还对应PC平台
- 裴秀智无ps照很真实,穿纱裙上《Vogue》,反而更美好
- 啥武器能让196国联名抵制?美国“开了坏头”,公然违背禁令研究
- 用苹果还是安卓,看完你就清楚了
- 病毒武汉病毒研究所所长王延轶回应病毒起源阴谋论
- 中国证监会就美国国会参议院通过《外国公司问责法案》事宜答记者问
- 因《越狱》圈粉无数的“米帅”,为何总是不温不火?
- 《狼人杀》看看新手玩家怎么想的
- 6月开始,月老助力,有望脱单,事业爱情完美的四大生肖
