第十一章 繼續(xù)壓縮
二進(jìn)制轉(zhuǎn)為36進(jìn)制的方法,能夠勝任這個(gè)地圖實(shí)例的壓縮。
但如果地圖更大一些,比如6X6、7X7大小,就會(huì)暴露出一個(gè)問題。
一行的二進(jìn)制數(shù)字有可能需要更多字符來表示。
比如:
“100110”
這個(gè)二進(jìn)制數(shù)字用36進(jìn)制來表示,得到:
“12”
壓縮后的字符串還是占了2的長(zhǎng)度,效果并不理想?yún)取?p> 那么,該怎樣改進(jìn)呢?
程序猿靈機(jī)一動(dòng),又想到了一種更好的方法。
首先,將這個(gè)二進(jìn)制數(shù)字表示為10進(jìn)制,得到“38”:
“100110”-“38”
然后,將這個(gè)“38”看作是字符的UTF-16編碼,返回對(duì)應(yīng)的字符。
(JavaScript代碼)
String.fromCharCode(38);
調(diào)用返回:“&”
沒錯(cuò),這個(gè)“按位與”符號(hào)就是壓縮后的結(jié)果!
這樣的壓縮方案,更徹底,只需要1個(gè)字符...
更酷!
有了好的方案,編寫代碼自然是很容易的事情啦。
楊成對(duì)地圖信息實(shí)例壓縮后,給檢查站的工作人員發(fā)送短信。
“哥們,真感謝你”。
科勒文拍了拍他的肩膀。
此時(shí),夕陽完全落山,大地被黑暗所籠罩。
“嘀...嘀...”
科勒文的手機(jī)鈴聲及時(shí)地響起。
“游客您好,我是景區(qū)工作人員,剛收到了你們的坐標(biāo)信息”。
“鑒于夜晚來臨,會(huì)給搜救工作帶來麻煩”。
“請(qǐng)你們先找個(gè)安全的地方,耐心等待”。
“我們將派出一臺(tái)尋路機(jī)器人,帶你們返回”。