研究完《长安12时辰》的望楼系统,我魔怔了

Han
20 评论 12604 浏览 66 收藏 19 分钟

最近大热的《长安12时辰》你看了吗?笔者研究完其中的望楼系统后,陷入了无尽的思考中……

豆瓣8.6分的《长安12时辰》,害人不浅啊!

是的,我已经消失一个月了,就因为我去追剧了……空闲时间都没了,真的。(才不是因为我懒)

终于,这剧今天完结,我也可以恢复更新了!

作为剧粉 + 科技宅,我今天,就给你深挖一下,这个剧里的通讯设定—— 望楼。

它在第一集里就出现了。

「这是望楼,今日于你有大用」这是檀棋交代张小敬的第一件事。

其实就是通讯系统,在长安城里传递消息。

城内每300步就有一个望楼,消息转瞬,即可传遍整个长安城。

我一看到这儿,就兴奋了!

诶?这不就是一个,12位比特的通讯系统么!

你看,他有上下两排,一共12格,每个格子可以点亮或熄灭。如果点亮是1,熄灭是0,那下面这个图,12位就可以表示成:

101011 101100

有了二进制码之后,我们就可以编码译码了,也就是把「码」和「字」对应起来。

现代计算机里,最基本的,就是用ASCII码了,下面是一个对照表:可以表示字母,数字和符号。

比如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位完全足够了。

当今计算机的汉字编码,比较常用的,比如有Unicode,下面是一个对照表。

在我仔细研究《十二时辰》之后,我发现,剧中其实有大小两种望楼!

一种是上面的小望楼,两排12格那种,还有一种是3*3的9宫格大望楼。

诶?为什么有两套系统?

我个人猜测:这是通讯系统Infra 2.0版,工程师正在逐步迁移(Migration),还没有完全结束,小的还没有完全弃用(Deprecated),所以得两套共存。

而且,两套系统还可以对接。

我去,居然还做了向下兼容(Backward Compatibility)。

你可能会说,9宫格,那岂不是降低成9bit了?反而性能下降?

No No No,它其实四周还有8片花辫,可以分别收起和放出,这样就多了8位。

加起来,就有9 + 8 = 17比特了

哦对了,毕竟白天和晚上的需求不同,它还分为“日用”和“夜用”两种模式。

长安百姓,真是夜里也安心呢~

你可能会问,12bit已经够用了,为啥要17bit呢?

除了可以传递更多内容以外,还有大用:纠错

你知道,信息传递很容易出错,如果这12位里,有一个地方坏了,比如灯不亮了,或者接收方看走眼了,这咋办。

你看,这12个格子太难读了,你得一个一个数,眼睛都要瞎了,随便一抖,就错了。

然而,改成9宫格之后,一眼就能看对并记住,用户体验直线上升,错误率下降。

当然,多出来的5个bit,还有更高级的用法。

这就是:计算机通讯里,两个经典手段:纠错码,和,冗余。

先来看纠错码

最简单的方法,就是“奇偶校验法”,也就是你多传1位,这位表示前面几位里面,应该有奇数还是偶数个1。

如果接收的时候,你发现,最后一位告诉你,前面应该有偶数个1,结果前面是奇数个1,那就说明这数据有问题了,你得让对方再传一遍。

如果,你有很多位可以用来纠错,比如大望楼多出了5位,那就可以用更高级的方法了,比如循环冗余校验法

这里有点复杂,但说白了就是,信息位和纠错位,两组数,进行运算,如果得出的值不对,那就验证失败。

这玩意说深了就是研究生课程了,收。

除了纠错码,还有冗余。有冗余,这本身就能纠错。

比如,你规定,传递的一个数,必须所有数字,都是一样的才有效。

那么,当你收到了比如6668666,那你就知道:哦,那个8绝对打错了,本来想说的应该是6666666。

你知道,咱们人的DNA就有非常大的冗余,很多密码子貌似没啥信息,去掉了也完全没影响。

这些“冗余”密码子的作用,一直有很多猜测,一种解释就是:这是防止,基因在自我复制时失误,酿成大错。

好了,以上都是我的脑洞。

在看了官方公布的资料以后,证明我完全是想多了。

根据官微@北斗北工作室,小望楼这12个框,其实只能代表3位,十进制数…

每四个一组,分别代表百位,十位,个位,0~9分别有不同的图案。

比如,下面这个就代表序号900。

当然了,阿拉伯数字这种标记法要到近代才被中国人熟练使用,所以当年使用的都是算筹表示法:

那么900,其实就是:

在编码之后,就可以翻译了,过程也很简单,就是查表。

靖安司官员们,有这么一个袋子,作为密码本。

而上面的900号,代表的就是“狼”,你看就在这里。

按照这个规律,其实能传递很多信息了,比如「张小敬」就是这样的:

怎么样,学会了吗?

来来来,咱们做一下课后小练习

练习题1:请翻译下图。

练习题2:请翻译下图。

练习题3: 熟读靖安司密码本,并背诵全文。(参考答案见文末)

以上,都是“靖安司公务员考试”送分题哦。

对了,别忘了还有:大望楼。

本质上也是编码成十进制的3位数。

9宫格的空间,用来表示个位。

左边的4个花瓣位,用来表示十位。

右边的4个花瓣位,用来表示百位。

当然,什么都不出现,就表示0。

那么,下面这个,就表示的是701。

不过,我很快发现了这个大望楼系统的两个Bug。

  • Bug-1:四宫格表示0~9我还能记住,可这九宫格,也太随意了,编码的人疯了。
  • Bug-2:为什么左边是高位起,右边是低位?

反人性吗?

难道不应该:左边是百位吗?

大望楼那边,左边的花瓣是十位,右边是百位,这是要弄死我。

你看这个“狼”,很容易读成900啊,喂。

反正,这么差的用户体验,一般人绝对懵了。

怪不得,只有我宾哥这种人肉计算机,才可以瞬间看懂。

这么说来,望楼可以传递0到999,一共1000个子信息。

可以说,虽然是12位比特的承载量,而现有的望楼系统,只用了四分之一,有75%的冗余量待开发,或者就是为了纠错的故意留下的。

妙啊!

经过我再仔细研究,剧中还有另一种编码方式:八卦法。

因为卦象是三行的嘛,这么一看,我大概知道为啥剧组想用大望楼了。

传输的时候,要传两遍,分别组成上下两组八卦。

整合以后,就是一个,额,现代计算机叫:Index(索引)。

译码时,用的则是开元20年,孙愐所修的音韵书籍《唐韵》,按照卷、韵、字,三个等级,依次索引。

可是,这部分似乎没有在剧中用上?或者说用的不多?我咋没发现呢。

莫非,这只是设想的一个方案,因为太复杂了,后来就没用上,官方放出来装x的?

厉害厉害厉害。

对了,上面这套编码规范,可不是闹着玩的,它被切切实实,用在了剧中拍出来的。

根据官微@北斗北工作室,剧中望楼每一个镜头都是对的。

比如:「张都尉为民捉狼。全城武侯、不良人随时听张都尉号令」

这句话,是这么传递的。

先是跟电报一样,人工对信息进行压缩,并分割成最小信息元:

张(263)都尉(197)捉(134)狼(121) 全城(20) 武职(217) 听令(152)

于是,信息就从原来的22个汉字,缩短为7组信息,只需变换七次。

按照每秒传两个,全部传完只需3.5秒。

不过,如果遇到复杂信息,就有点蛋疼,比如下面这个。

一共48个信息元…

估计接收方人脑的内存,是不够的吧。

而可怜的美术老师,也只能小心地写上“内容精简待商榷”……

我真的要对这部良心剧竖大拇指,太强了。

好了,以上就是望楼系统的全部了。

最后,给你送上一个鸡汤:

无论遇到任何困难,都要迎难直上,不退。

「彩蛋」

其实,我还有一个脑洞(已经魔怔)。

这套系统的安全性其实不行,毕竟密码本这种办法,还是最简单的加密手段。

一旦密码本被贼人所用,安全性尽失,周全无望。(额,我怎么开始了文言文)。

反正是传数字嘛,那当年完全可以用现在流行的RSA加密了,也就是:设定一个很大的素数p和q,然后传递这个乘积,解密的时候,再做mod运算by (p-1)(q-1)……

练习题参考答案

  1. 进入(701)
  2. 西市(843)
  3. (略)

#专栏作家#

Han,著有《硅谷思维》一书,微信公众号:涵的硅谷成长笔记(ID:HanGrowth),人人都是产品经理专栏作家。硅谷一线工程师,专注电商、零售、社交、商业化、人工智能等领域。

本文由 @Han 原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 我想说的是,望楼这种即时通讯设施,第一要求就是快,根本没必要整这么完备的编码。最优的应该是设定一些常用符号马上能够打出来的

    回复
  2. 关于个十百顺序的问题,你忘了,古代写字都是从右往左写的吗?你说的不习惯,只是现代人不习惯而已

    来自浙江 回复
  3. 导演说,我没这么想

    来自四川 回复
  4. 让我想到无间道里的摩斯密码

    来自浙江 回复
  5. 狼人

    回复
  6. 这篇文章让我明白,为什么产品的十二时辰这么火了

    回复
  7. 这哪里难了,不就是大学时候学习的通信知识嘛

    来自福建 回复
    1. 不过对于非专业人士来说却是要花点时间看看

      来自福建 回复
    2. 真相了

      回复
  8. 牛批!

    来自北京 回复
  9. 你太牛逼了!!!!

    来自河南 回复
  10. 0100 1111~ 01001101~ 0100 0111~牛~

    来自北京 回复
  11. 哈哈哈,看得懂,才怪…

    来自广西 回复
    1. 看得懂的都是人才

      回复
  12. 赞 有心了

    来自广东 回复
  13. 本来想一大早看看清醒清醒,看完更是糊涂了

    来自江苏 回复
  14. 你是个鬼才

    来自广东 回复
  15. 哈哈哈,二进制太现代啦,会被喷的

    来自浙江 回复
  16. 鼓掌鼓掌,通过现象看本质,我也喜欢看历史,去研究本质

    回复
  17. 艘发,你这个脑洞大开啊

    回复