研究完《長安十二時辰》的望樓系統,我魔怔

終於,這劇今天完結.

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

研究完《長安十二時辰》的望樓系統,我魔怔

它在第一集裡就出現了。

「這是望樓,今日於你有大用」

這是檀棋交代張小敬的第一件事。

研究完《長安十二時辰》的望樓系統,我魔怔

其實就是通訊系統,在長安城裡傳遞消息。

城內每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)……


分享到:


相關文章: