溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python3如何實現(xiàn)內(nèi)置函數(shù)chr和ord進(jìn)制轉(zhuǎn)換

發(fā)布時間:2020-07-18 14:06:17 來源:億速云 閱讀:168 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了Python3如何實現(xiàn)內(nèi)置函數(shù)chr和ord進(jìn)制轉(zhuǎn)換,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

python的內(nèi)置函數(shù)中,有一對函數(shù):chr 和 ord,有著相反的功能。

1. chr(x):用一個數(shù)值作參數(shù),返回一個對應(yīng)的unicode字符,該參數(shù)的有效范圍是從0到1114111(16進(jìn)制時為0x10FFFF),參數(shù)可以是十進(jìn)制,也可以是十六進(jìn)制。

print(chr(105)) # ---> i
print(chr(0x9980)) # ---> 漢字:馀
print(chr(0x0030)) # ---> 0
print(chr(8364))  # ---> ?

print(chr(127137)) # ---> 撲克:A
print(chr(44032)) # ---> 韓語:가
print(chr(126976)) # --->麻將:東

Python3如何實現(xiàn)內(nèi)置函數(shù)chr和ord進(jìn)制轉(zhuǎn)換

2. ord(x):chr(x)的反向函數(shù),通過一個Unicode字符,返回其對應(yīng)的數(shù)值。

print(ord('0')) # ---> 48(十進(jìn)制):其十六進(jìn)制為 0x0030
print(ord('i')) # ---> 105(十進(jìn)制)

3. 其中,進(jìn)制轉(zhuǎn)換,主要有以下幾種方式:

十六進(jìn)制、二進(jìn)制、八進(jìn)制轉(zhuǎn)十進(jìn)制,注意:二進(jìn)制表示中每一位只能是0或1表示,八進(jìn)制中每一位只能在0-7之間,同理十六進(jìn)制中的每一位在0-f之間,超出范圍會報錯。

print(int('10',2)) #二進(jìn)制轉(zhuǎn)十進(jìn)制,int('20',2) 會報錯
print(int('30',8)) #八進(jìn)制轉(zhuǎn)十進(jìn)制,int('80',8) 會報錯
print(int('f0',16)) #十六進(jìn)制轉(zhuǎn)十進(jìn)制,int('g0',16) 會報錯

# 下面的方式也可
print(int('0b10',2)) #二進(jìn)制轉(zhuǎn)十進(jìn)制
print(int('0o30',8)) #八進(jìn)制轉(zhuǎn)十進(jìn)制
print(int('0xf0',16)) #十六進(jìn)制轉(zhuǎn)十進(jìn)制

十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制,內(nèi)置函數(shù)bin、oct、hex得到的進(jìn)制前面會分別帶有'0b','0o','0x'字符。

print(bin(15)) # 十進(jìn)制轉(zhuǎn)二進(jìn)制
print(oct(15)) # 十進(jìn)制轉(zhuǎn)八進(jìn)制
print(hex(482)) # 十進(jìn)制轉(zhuǎn)十六進(jìn)制

或者

print(format(482,"x")) # 十進(jìn)制轉(zhuǎn)十六進(jìn)制
print(format(15,"o")) # 十進(jìn)制轉(zhuǎn)八進(jìn)制
print(format(15,"b")) # 十進(jìn)制轉(zhuǎn)二進(jìn)制

4. format進(jìn)制轉(zhuǎn)換,b,o,d,x 分別表示 二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制

十六進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十進(jìn)制

# format進(jìn)制轉(zhuǎn)換
print('{:b}'.format(0xef)) #十六進(jìn)制轉(zhuǎn)二進(jìn)制:11101111
print('{:o}'.format(0xef)) #十六進(jìn)制轉(zhuǎn)八進(jìn)制:357
print('{:d}'.format(0xef)) #十六進(jìn)制轉(zhuǎn)十進(jìn)制:239

#格式化中加'#'表示加入標(biāo)識
print('{:#b}'.format(0xef)) #十六進(jìn)制轉(zhuǎn)二進(jìn)制:0b11101111,加標(biāo)識 0b
print('{:#o}'.format(0xef)) #十六進(jìn)制轉(zhuǎn)八進(jìn)制:0o357,加標(biāo)識 0o
print('{:#d}'.format(0xef)) #十六進(jìn)制轉(zhuǎn)十進(jìn)制:239,十進(jìn)制不變

八進(jìn)制、十進(jìn)制轉(zhuǎn)二進(jìn)制

print('{:b}'.format(0o357)) #八進(jìn)制轉(zhuǎn)二進(jìn)制:11101111
print('{:b}'.format(239)) #十進(jìn)制轉(zhuǎn)二進(jìn)制:11101111
print('{:#b}'.format(0o357)) #八進(jìn)制轉(zhuǎn)二進(jìn)制:0b11101111,加標(biāo)識 0b
print('{:#b}'.format(239)) #十進(jìn)制轉(zhuǎn)二進(jìn)制:0b11101111,加標(biāo)識 0b

十進(jìn)制、八進(jìn)制、二進(jìn)制轉(zhuǎn)十六進(jìn)制

#
print('{:x}'.format(239))  #十進(jìn)制轉(zhuǎn)十六進(jìn)制:ef
print('{:x}'.format(0b11101111)) #二進(jìn)制轉(zhuǎn)十六進(jìn)制:ef
print('{:x}'.format(0o357)) #八進(jìn)制轉(zhuǎn)十六進(jìn)制:ef

#
print('{:#x}'.format(239))  #十進(jìn)制轉(zhuǎn)十六進(jìn)制:0xef,加標(biāo)識 0x
print('{:#x}'.format(0b11101111)) #二進(jìn)制轉(zhuǎn)十六進(jìn)制:0xef,加標(biāo)識 0x
print('{:#x}'.format(0o357)) #八進(jìn)制轉(zhuǎn)十六進(jìn)制:0xef,加標(biāo)識 0x

八進(jìn)制以 '0o開頭',二進(jìn)制以 '0b' 開頭,十六進(jìn)制以 '0x' 開頭。

注:

正好了解一下unicode字符集,Unicode(統(tǒng)一碼、萬國碼、單一碼)是計算機(jī)科學(xué)領(lǐng)域里的一項業(yè)界標(biāo)準(zhǔn),包括字符集、編碼方案等,是可以容納世界上所有文字和符號的字符編碼方案,比ASCII碼能表示的范圍大得多。

其中包括的種類可以自行搜索,每個種類在各自的區(qū)間范圍內(nèi),有趣的字符很多,參考知乎大佬的操作,可以發(fā)現(xiàn):

  • 象形文字
  • 楔形文字
  • 八卦
  • 太極圖案
  • 易經(jīng)64卦:范圍是[0x4DC0, 0x4DFF],十進(jìn)制是[19904, 19967],共64個
  • 撲克牌:范圍是[0x1f0a0, 0x1f0df],十進(jìn)制是[127136, 127199],共64個
  • 麻將:[126976, 127009]是34張正常牌,例如東南西北中發(fā)白、筒子等,接下來8張[127010, 127017]屬于春、夏、秋、冬,梅、蘭、竹、菊
  • 小圖標(biāo)
  • 漢字:常用漢字[19968, 40917],十六進(jìn)制是[0x4E00, 0x9FD5];還有其他漢字在其他區(qū)域
  • 韓文:[44032, 55203]
  • 阿拉伯文、希臘文、日文、朝鮮文、泰文、緬甸文、蒙古文、藏文、拉丁文......
  • 盲文
  • 數(shù)學(xué)運算符:[0x2200-0x22FF]
  • 箭頭
  • 貨幣
  • 標(biāo)點等

以上就是關(guān)于Python3如何實現(xiàn)內(nèi)置函數(shù)chr和ord進(jìn)制轉(zhuǎn)換的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI