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

Han
20 評(píng)論 12639 瀏覽 66 收藏 19 分鐘

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

豆瓣8.6分的《長安12時(shí)辰》,害人不淺啊!

是的,我已經(jīng)消失一個(gè)月了,就因?yàn)槲胰プ穭×恕臻e時(shí)間都沒了,真的。(才不是因?yàn)槲覒校?/p>

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

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

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

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

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

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

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

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

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

101011 101100。

有了二進(jìn)制碼之后,我們就可以編碼譯碼了,也就是把「碼」和「字」對(duì)應(yīng)起來。

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

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

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

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

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

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

當(dāng)今計(jì)算機(jī)的漢字編碼,比較常用的,比如有Unicode,下面是一個(gè)對(duì)照表。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

然而,改成9宮格之后,一眼就能看對(duì)并記住,用戶體驗(yàn)直線上升,錯(cuò)誤率下降。

當(dāng)然,多出來的5個(gè)bit,還有更高級(jí)的用法。

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

先來看糾錯(cuò)碼。

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

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

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

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

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

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

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

那么,當(dāng)你收到了比如6668666,那你就知道:哦,那個(gè)8絕對(duì)打錯(cuò)了,本來想說的應(yīng)該是6666666。

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

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

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

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

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

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

比如,下面這個(gè)就代表序號(hào)900。

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

那么900,其實(shí)就是:

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

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

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

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

怎么樣,學(xué)會(huì)了嗎?

來來來,咱們做一下課后小練習(xí)

練習(xí)題1:請(qǐng)翻譯下圖。

練習(xí)題2:請(qǐng)翻譯下圖。

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

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

對(duì)了,別忘了還有:大望樓。

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

9宮格的空間,用來表示個(gè)位。

左邊的4個(gè)花瓣位,用來表示十位。

右邊的4個(gè)花瓣位,用來表示百位。

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

那么,下面這個(gè),就表示的是701。

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

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

反人性嗎?

難道不應(yīng)該:左邊是百位嗎?

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

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

反正,這么差的用戶體驗(yàn),一般人絕對(duì)懵了。

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

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

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

妙?。?/p>

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

因?yàn)樨韵笫侨械穆?,這么一看,我大概知道為啥劇組想用大望樓了。

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

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

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

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

莫非,這只是設(shè)想的一個(gè)方案,因?yàn)樘珡?fù)雜了,后來就沒用上,官方放出來裝x的?

厲害厲害厲害。

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

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

比如:「張都尉為民捉狼。全城武侯、不良人隨時(shí)聽張都尉號(hào)令」

這句話,是這么傳遞的。

先是跟電報(bào)一樣,人工對(duì)信息進(jìn)行壓縮,并分割成最小信息元:

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

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

按照每秒傳兩個(gè),全部傳完只需3.5秒。

不過,如果遇到復(fù)雜信息,就有點(diǎn)蛋疼,比如下面這個(gè)。

一共48個(gè)信息元…

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

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

我真的要對(duì)這部良心劇豎大拇指,太強(qiáng)了。

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

最后,給你送上一個(gè)雞湯:

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

「彩蛋」

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

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

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

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

練習(xí)題參考答案

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

#專欄作家#

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

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

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

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

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

    來自浙江 回復(fù)
  3. 導(dǎo)演說,我沒這么想

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

    來自浙江 回復(fù)
  5. 狼人

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

    回復(fù)
  7. 這哪里難了,不就是大學(xué)時(shí)候?qū)W習(xí)的通信知識(shí)嘛

    來自福建 回復(fù)
    1. 不過對(duì)于非專業(yè)人士來說卻是要花點(diǎn)時(shí)間看看

      來自福建 回復(fù)
    2. 真相了

      回復(fù)
  8. 牛批!

    來自北京 回復(fù)
  9. 你太牛逼了?。。。?/p>

    來自河南 回復(fù)
  10. 0100 1111~ 01001101~ 0100 0111~牛~

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

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

      回復(fù)
  12. 贊 有心了

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

    來自江蘇 回復(fù)
  14. 你是個(gè)鬼才

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

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

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

    回復(fù)