引發思考的原因
今天在看《Redis設計與實現》的壓縮列表的構成,看到有用16進製表示當前列表存了多少位元組,我所掌握的16進位制轉換10進位制都是先轉2進位制,2進位制再轉10進位制,於是就走了神,多想了想16進位制和10進位制之間的轉換問題
大概思想
站在10進位制看16進位制無非是要比10進位制多6位數,所以可以這樣:
0X50 說明經過了5輪,16進位制比10進位制多6位數,所以轉換為10進製為:
5 X 6 = 30
30 + 50 = 80(十進位制)
0X3C 說明經過了3輪,16進位制比10進位制多6位數,所以轉換為10進製為:
3 X 6 = 18
它的個位是C,對應10進製為 12
最終:
30 + 18 + 12 = 40 (十進位制)
0XEE 說明經過了14輪,16進位制比10進位制多6位數,所以轉換為10進製為:
14 X 6 = 84
它的個位是E,對應10進製為 14
140 + 84 + 14 = 238
注意 只適用於兩位的16進位制
兩位的16進位制,的確能口算出10進位制,但是我還沒整明白為什麼大於兩位的不適用,有骨骼精奇的老鐵能指點下嗎?
本作品採用《CC 協議》,轉載必須註明作者和本文連結