研究完《長安12時辰》的望樓系統(tǒng),我魔怔了

Han
20 評論 12697 瀏覽 66 收藏 19 分鐘

最近大熱的《長安12時辰》你看了嗎?筆者研究完其中的望樓系統(tǒng)后,陷入了無盡的思考中……

豆瓣8.6分的《長安12時辰》,害人不淺??!

是的,我已經(jīng)消失一個月了,就因為我去追劇了……空閑時間都沒了,真的。(才不是因為我懶)

終于,這劇今天完結(jié),我也可以恢復更新了!

作為劇粉 + 科技宅,我今天,就給你深挖一下,這個劇里的通訊設定—— 望樓。

它在第一集里就出現(xiàn)了。

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

其實就是通訊系統(tǒng),在長安城里傳遞消息。

城內(nèi)每300步就有一個望樓,消息轉(zhuǎn)瞬,即可傳遍整個長安城。

我一看到這兒,就興奮了!

誒?這不就是一個,12位比特的通訊系統(tǒng)么!

你看,他有上下兩排,一共12格,每個格子可以點亮或熄滅。如果點亮是1,熄滅是0,那下面這個圖,12位就可以表示成:

101011 101100。

有了二進制碼之后,我們就可以編碼譯碼了,也就是把「碼」和「字」對應起來。

現(xiàn)代計算機里,最基本的,就是用ASCII碼了,下面是一個對照表:可以表示字母,數(shù)字和符號。

比如O就是0100 1111,M就是01001101, G就是0100 0111。

那么,李佳琦的口頭禪,用二進制表示就是:0100 1111~ 01001101~ 0100 0111~

其實有12位bit已經(jīng)很多了,上面的ASCII碼,其實只要7位。(看上去是8位,但第一位都是0)

那么12位,其實可以表示2的12次方,也就是4096個漢字了。

按照咱中國1988年出版的《現(xiàn)代漢語常用字表》,常用漢字一共也就3500個,可以涵蓋99.48%的日常所需,所以12位完全足夠了。

當今計算機的漢字編碼,比較常用的,比如有Unicode,下面是一個對照表。

在我仔細研究《十二時辰》之后,我發(fā)現(xiàn),劇中其實有大小兩種望樓!

一種是上面的小望樓,兩排12格那種,還有一種是3*3的9宮格大望樓。

誒?為什么有兩套系統(tǒng)?

我個人猜測:這是通訊系統(tǒng)Infra 2.0版,工程師正在逐步遷移(Migration),還沒有完全結(jié)束,小的還沒有完全棄用(Deprecated),所以得兩套共存。

而且,兩套系統(tǒng)還可以對接。

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

你可能會說,9宮格,那豈不是降低成9bit了?反而性能下降?

No No No,它其實四周還有8片花辮,可以分別收起和放出,這樣就多了8位。

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

哦對了,畢竟白天和晚上的需求不同,它還分為“日用”和“夜用”兩種模式。

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

你可能會問,12bit已經(jīng)夠用了,為啥要17bit呢?

除了可以傳遞更多內(nèi)容以外,還有大用:糾錯

你知道,信息傳遞很容易出錯,如果這12位里,有一個地方壞了,比如燈不亮了,或者接收方看走眼了,這咋辦。

你看,這12個格子太難讀了,你得一個一個數(shù),眼睛都要瞎了,隨便一抖,就錯了。

然而,改成9宮格之后,一眼就能看對并記住,用戶體驗直線上升,錯誤率下降。

當然,多出來的5個bit,還有更高級的用法。

這就是:計算機通訊里,兩個經(jīng)典手段:糾錯碼,和,冗余。

先來看糾錯碼。

最簡單的方法,就是“奇偶校驗法”,也就是你多傳1位,這位表示前面幾位里面,應該有奇數(shù)還是偶數(shù)個1。

如果接收的時候,你發(fā)現(xiàn),最后一位告訴你,前面應該有偶數(shù)個1,結(jié)果前面是奇數(shù)個1,那就說明這數(shù)據(jù)有問題了,你得讓對方再傳一遍。

如果,你有很多位可以用來糾錯,比如大望樓多出了5位,那就可以用更高級的方法了,比如循環(huán)冗余校驗法。

這里有點復雜,但說白了就是,信息位和糾錯位,兩組數(shù),進行運算,如果得出的值不對,那就驗證失敗。

這玩意說深了就是研究生課程了,收。

除了糾錯碼,還有冗余。有冗余,這本身就能糾錯。

比如,你規(guī)定,傳遞的一個數(shù),必須所有數(shù)字,都是一樣的才有效。

那么,當你收到了比如6668666,那你就知道:哦,那個8絕對打錯了,本來想說的應該是6666666。

你知道,咱們?nèi)说腄NA就有非常大的冗余,很多密碼子貌似沒啥信息,去掉了也完全沒影響。

這些“冗余”密碼子的作用,一直有很多猜測,一種解釋就是:這是防止,基因在自我復制時失誤,釀成大錯。

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

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

根據(jù)官微@北斗北工作室,小望樓這12個框,其實只能代表3位,十進制數(shù)…

每四個一組,分別代表百位,十位,個位,0~9分別有不同的圖案。

比如,下面這個就代表序號900。

當然了,阿拉伯數(shù)字這種標記法要到近代才被中國人熟練使用,所以當年使用的都是算籌表示法:

那么900,其實就是:

在編碼之后,就可以翻譯了,過程也很簡單,就是查表。

靖安司官員們,有這么一個袋子,作為密碼本。

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

按照這個規(guī)律,其實能傳遞很多信息了,比如「張小敬」就是這樣的:

怎么樣,學會了嗎?

來來來,咱們做一下課后小練習。

練習題1:請翻譯下圖。

練習題2:請翻譯下圖。

練習題3: 熟讀靖安司密碼本,并背誦全文。(參考答案見文末)

以上,都是“靖安司公務員考試”送分題哦。

對了,別忘了還有:大望樓。

本質(zhì)上也是編碼成十進制的3位數(shù)。

9宮格的空間,用來表示個位。

左邊的4個花瓣位,用來表示十位。

右邊的4個花瓣位,用來表示百位。

當然,什么都不出現(xiàn),就表示0。

那么,下面這個,就表示的是701。

不過,我很快發(fā)現(xiàn)了這個大望樓系統(tǒng)的兩個Bug。

  • Bug-1:四宮格表示0~9我還能記住,可這九宮格,也太隨意了,編碼的人瘋了。
  • Bug-2:為什么左邊是高位起,右邊是低位?

反人性嗎?

難道不應該:左邊是百位嗎?

大望樓那邊,左邊的花瓣是十位,右邊是百位,這是要弄死我。

你看這個“狼”,很容易讀成900啊,喂。

反正,這么差的用戶體驗,一般人絕對懵了。

怪不得,只有我賓哥這種人肉計算機,才可以瞬間看懂。

這么說來,望樓可以傳遞0到999,一共1000個子信息。

可以說,雖然是12位比特的承載量,而現(xiàn)有的望樓系統(tǒng),只用了四分之一,有75%的冗余量待開發(fā),或者就是為了糾錯的故意留下的。

妙啊!

經(jīng)過我再仔細研究,劇中還有另一種編碼方式:八卦法。

因為卦象是三行的嘛,這么一看,我大概知道為啥劇組想用大望樓了。

傳輸?shù)臅r候,要傳兩遍,分別組成上下兩組八卦。

整合以后,就是一個,額,現(xiàn)代計算機叫:Index(索引)。

譯碼時,用的則是開元20年,孫愐所修的音韻書籍《唐韻》,按照卷、韻、字,三個等級,依次索引。

可是,這部分似乎沒有在劇中用上?或者說用的不多?我咋沒發(fā)現(xiàn)呢。

莫非,這只是設想的一個方案,因為太復雜了,后來就沒用上,官方放出來裝x的?

厲害厲害厲害。

對了,上面這套編碼規(guī)范,可不是鬧著玩的,它被切切實實,用在了劇中拍出來的。

根據(jù)官微@北斗北工作室,劇中望樓每一個鏡頭都是對的。

比如:「張都尉為民捉狼。全城武侯、不良人隨時聽張都尉號令」

這句話,是這么傳遞的。

先是跟電報一樣,人工對信息進行壓縮,并分割成最小信息元:

張(263)都尉(197)捉(134)狼(121) 全城(20) 武職(217) 聽令(152)

于是,信息就從原來的22個漢字,縮短為7組信息,只需變換七次。

按照每秒傳兩個,全部傳完只需3.5秒。

不過,如果遇到復雜信息,就有點蛋疼,比如下面這個。

一共48個信息元…

估計接收方人腦的內(nèi)存,是不夠的吧。

而可憐的美術老師,也只能小心地寫上“內(nèi)容精簡待商榷”……

我真的要對這部良心劇豎大拇指,太強了。

好了,以上就是望樓系統(tǒng)的全部了。

最后,給你送上一個雞湯:

無論遇到任何困難,都要迎難直上,不退。

「彩蛋」

其實,我還有一個腦洞(已經(jīng)魔怔)。

這套系統(tǒng)的安全性其實不行,畢竟密碼本這種辦法,還是最簡單的加密手段。

一旦密碼本被賊人所用,安全性盡失,周全無望。(額,我怎么開始了文言文)。

反正是傳數(shù)字嘛,那當年完全可以用現(xiàn)在流行的RSA加密了,也就是:設定一個很大的素數(shù)p和q,然后傳遞這個乘積,解密的時候,再做mod運算by (p-1)(q-1)……

練習題參考答案

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

#專欄作家#

Han,著有《硅谷思維》一書,微信公眾號:涵的硅谷成長筆記(ID:HanGrowth),人人都是產(chǎn)品經(jīng)理專欄作家。硅谷一線工程師,專注電商、零售、社交、商業(yè)化、人工智能等領域。

本文由 @Han 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 我想說的是,望樓這種即時通訊設施,第一要求就是快,根本沒必要整這么完備的編碼。最優(yōu)的應該是設定一些常用符號馬上能夠打出來的

    回復
  2. 關于個十百順序的問題,你忘了,古代寫字都是從右往左寫的嗎?你說的不習慣,只是現(xiàn)代人不習慣而已

    來自浙江 回復
  3. 導演說,我沒這么想

    來自四川 回復
  4. 讓我想到無間道里的摩斯密碼

    來自浙江 回復
  5. 狼人

    回復
  6. 這篇文章讓我明白,為什么產(chǎn)品的十二時辰這么火了

    回復
  7. 這哪里難了,不就是大學時候?qū)W習的通信知識嘛

    來自福建 回復
    1. 不過對于非專業(yè)人士來說卻是要花點時間看看

      來自福建 回復
    2. 真相了

      回復
  8. 牛批!

    來自北京 回復
  9. 你太牛逼了?。。?!

    來自河南 回復
  10. 0100 1111~ 01001101~ 0100 0111~牛~

    來自北京 回復
  11. 哈哈哈,看得懂,才怪…

    來自廣西 回復
    1. 看得懂的都是人才

      回復
  12. 贊 有心了

    來自廣東 回復
  13. 本來想一大早看看清醒清醒,看完更是糊涂了

    來自江蘇 回復
  14. 你是個鬼才

    來自廣東 回復
  15. 哈哈哈,二進制太現(xiàn)代啦,會被噴的

    來自浙江 回復
  16. 鼓掌鼓掌,通過現(xiàn)象看本質(zhì),我也喜歡看歷史,去研究本質(zhì)

    回復
  17. 艘發(fā),你這個腦洞大開啊

    回復