Python3內建函式chr和ord實現進位制轉換
python的內建函式中,有一對函式:chr 和 ord,有著相反的功能。
1. chr(x):用一個數值作引數,返回一個對應的unicode字元,該引數的有效範圍是從0到1114111(16進位制時為0x10FFFF),引數可以是十進位制,也可以是十六進位制。
print(chr(105)) # ---> i print(chr(0x9980)) # ---> 漢字:餘 print(chr(0x0030)) # ---> 0 print(chr(8364)) # ---> ? print(chr(127137)) # ---> 撲克:A print(chr(44032)) # ---> 韓語:가 print(chr(126976)) # --->麻將:東
2. ord(x):chr(x)的反向函式,通過一個Unicode字元,返回其對應的數值。
print(ord('0')) # ---> 48(十進位制):其十六進位制為 0x0030 print(ord('i')) # ---> 105(十進位制)
3. 其中,進位制轉換,主要有以下幾種方式:
十六進位制、二進位制、八進位制轉十進位制,注意:二進位制表示中每一位只能是0或1表示,八進位制中每一位只能在0-7之間,同理十六進位制中的每一位在0-f之間,超出範圍會報錯。
print(int('10',2)) #二進位制轉十進位制,int('20',2) 會報錯
print(int('30',8)) #八進位制轉十進位制,int('80',8) 會報錯print(int('f0',16)) #十六進位制轉十進位制,int('g0',16) 會報錯# 下面的方式也可
print(int('0b10',2)) #二進位制轉十進位制
print(int('0o30',8)) #八進位制轉十進位制
print(int('0xf0',16)) #十六進位制轉十進位制
十進位制轉二進位制、八進位制、十六進位制,內建函式bin、oct、hex得到的進位制前面會分別帶有'0b','0o','0x'字元。
print(bin(15)) # 十進位制轉二進位制
print(oct(15)) # 十進位制轉八進位制
print(hex(482)) # 十進位制轉十六進位制
或者
print(format(482,"x")) # 十進位制轉十六進位制
print(format(15,"o")) # 十進位制轉八進位制
print(format(15,"b")) # 十進位制轉二進位制
4. format進位制轉換,b,o,d,x 分別表示 二進位制、八進位制、十進位制、十六進位制
十六進位制轉二進位制、八進位制、十進位制
# format進位制轉換 print('{:b}'.format(0xef)) #十六進位制轉二進位制:11101111 print('{:o}'.format(0xef)) #十六進位制轉八進位制:357 print('{:d}'.format(0xef)) #十六進位制轉十進位制:239 #格式化中加'#'表示加入標識 print('{:#b}'.format(0xef)) #十六進位制轉二進位制:0b11101111,加標識 0b print('{:#o}'.format(0xef)) #十六進位制轉八進位制:0o357,加標識 0o print('{:#d}'.format(0xef)) #十六進位制轉十進位制:239,十進位制不變
八進位制、十進位制轉二進位制
print('{:b}'.format(0o357)) #八進位制轉二進位制:11101111
print('{:b}'.format(239)) #十進位制轉二進位制:11101111
print('{:#b}'.format(0o357)) #八進位制轉二進位制:0b11101111,加標識 0b
print('{:#b}'.format(239)) #十進位制轉二進位制:0b11101111,加標識 0b
十進位制、八進位制、二進位制轉十六進位制
# print('{:x}'.format(239)) #十進位制轉十六進位制:ef print('{:x}'.format(0b11101111)) #二進位制轉十六進位制:ef print('{:x}'.format(0o357)) #八進位制轉十六進位制:ef # print('{:#x}'.format(239)) #十進位制轉十六進位制:0xef,加標識 0x print('{:#x}'.format(0b11101111)) #二進位制轉十六進位制:0xef,加標識 0x print('{:#x}'.format(0o357)) #八進位制轉十六進位制:0xef,加標識 0x
八進位制以 '0o開頭',二進位制以 '0b' 開頭,十六進位制以 '0x' 開頭。
注:
正好了解一下unicode字符集,Unicode(統一碼、萬國碼、單一碼)是電腦科學領域裡的一項業界標準,包括字符集、編碼方案等,是可以容納世界上所有文字和符號的字元編碼方案,比ASCII碼能表示的範圍大得多。
其中包括的種類可以自行搜尋,每個種類在各自的區間範圍內,有趣的字元很多,參考知乎大佬的操作,可以發現:
- 象形文字
- 楔形文字
- 八卦
- 太極圖案
- 易經64卦:範圍是[0x4DC0,0x4DFF],十進位制是[19904,19967],共64個
- 撲克牌:範圍是[0x1f0a0,0x1f0df],十進位制是[127136,127199],共64個
- 麻將:[126976,127009]是34張正常牌,例如東南西北中發白、筒子等,接下來8張[127010,127017]屬於春、夏、秋、冬,梅、蘭、竹、菊
- 小圖示
- 漢字:常用漢字[19968,40917],十六進位制是[0x4E00,0x9FD5];還有其他漢字在其他區域
- 韓文:[44032,55203]
- 阿拉伯文、希臘文、日文、朝鮮文、泰文、緬甸文、蒙古文、藏文、拉丁文......
- 盲文
- 數學運算子:[0x2200-0x22FF]
- 箭頭
- 貨幣
- 標點等
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。