python0o1010_python进制转换
python進(jìn)制轉(zhuǎn)換
本篇內(nèi)容稍稍有一點(diǎn)難度,如果你只是python愛好者,可以忽略此篇教程,如果你是計(jì)算機(jī)相關(guān)專業(yè)學(xué)習(xí)者或從業(yè)者,那么建議你認(rèn)真閱讀。
我們平時(shí)使用的數(shù)字是十進(jìn)制,逢10進(jìn)1, 而計(jì)算機(jī)采用的是二進(jìn)制,此外,有時(shí)你還會遇到八進(jìn)制,十六進(jìn)制, 其實(shí)只要掌握好方法,這些進(jìn)制的理解就不難,相互之間的轉(zhuǎn)換也并不復(fù)雜,我們先來看一個(gè)10進(jìn)制的例子
432
你當(dāng)然知道4在百位,3在十位, 2在個(gè)位,這個(gè)數(shù)值可以換一種描述方式
4*102 + 3*101 + 1*100 = 400 + 30 + 1
介紹這個(gè)公式是為了讓你更好的理解其他進(jìn)制的數(shù)值如何轉(zhuǎn)成10進(jìn)制
1. 手動(dòng)計(jì)算進(jìn)制轉(zhuǎn)換
1.1 二進(jìn)制轉(zhuǎn)十進(jìn)制
以1101010為例,講解如何轉(zhuǎn)成十進(jìn)制數(shù)值
1101010 = 1*26 + 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 0*20 = 64 + 32 + 8 + 4 = 106
python中二進(jìn)制的數(shù)值以0b開頭
print(0b1101010) # 106
1.2 八進(jìn)制轉(zhuǎn)十進(jìn)制
如果你已經(jīng)理解了二進(jìn)制如何轉(zhuǎn)成十進(jìn)制,那么八進(jìn)制轉(zhuǎn)成十進(jìn)制也就變得簡單了,以八進(jìn)制125為例
125 = 1*82 + 2*81 + 5*80 = 64 + 16 + 5 = 85
在python中,八進(jìn)制的數(shù)值使用0o開頭
print(0o125) # 85
1.3 十六進(jìn)制轉(zhuǎn)十進(jìn)制
十六進(jìn)制稍稍比八進(jìn)制麻煩一點(diǎn),十六進(jìn)制是逢16進(jìn)1,因此單個(gè)位上的數(shù)值會超過9, 超過9的部分依次使用a, b, c, d, e, f, 分別代表10, 11, 12, 13, 14, 15。
以十六進(jìn)制3f2a1為例
3f2a1 = 3*164 + 15*163 + 2*162 + 10*161 + 1*160 = 196608 + 61440 + 512 + 160 + 1 = 258721
python中十六進(jìn)制的數(shù)值以0x開頭
print(0x3f2a1) # 258721
2. 使用函數(shù)進(jìn)行進(jìn)制轉(zhuǎn)換
2.1 二進(jìn)制,八進(jìn)制,十六進(jìn)制轉(zhuǎn)成十進(jìn)制
value = int('1101010', 2)
print(value) # 106
value = int('125', 8)
print(value) # 85
value = int('3f2a1', 16)
print(value) # 258721
使用int函數(shù)可以將二進(jìn)制,八進(jìn)制,十六進(jìn)制的數(shù)值轉(zhuǎn)成十進(jìn)制數(shù)值,而且字符串的開頭可以不攜帶進(jìn)制的標(biāo)識,如果你喜歡使用,也可以寫成 int('0x3f2a1', 16)
2.2 十進(jìn)制轉(zhuǎn)成二進(jìn)制,八進(jìn)制,十六進(jìn)制
十進(jìn)制轉(zhuǎn)二進(jìn)制使用bin()函數(shù), 十進(jìn)制轉(zhuǎn)八進(jìn)制使用oct()函數(shù), 十進(jìn)制轉(zhuǎn)十六進(jìn)制使用hex()函數(shù)
print(bin(106)) # 0b1101010 十進(jìn)制轉(zhuǎn)二進(jìn)制
print(oct(85)) # 0o125 十進(jìn)制轉(zhuǎn)八進(jìn)制
print(hex(258721)) # 0x3f2a1 十進(jìn)制轉(zhuǎn)十六進(jìn)制
2.3 八進(jìn)制,十六進(jìn)制轉(zhuǎn)二進(jìn)制
并沒有函數(shù)可以實(shí)現(xiàn)直接將八進(jìn)制或十六進(jìn)制數(shù)轉(zhuǎn)成二進(jìn)制,因此需要借用int()函數(shù)先將八進(jìn)制的數(shù)轉(zhuǎn)成十進(jìn)制,然后使用bin()函數(shù)將十進(jìn)制數(shù)轉(zhuǎn)成二進(jìn)制
print(bin(int('125', 8))) # 八進(jìn)制轉(zhuǎn)二進(jìn)制
print(bin(int('0x3f2a1', 16))) # 十六進(jìn)制轉(zhuǎn)二進(jìn)制
2.4 二進(jìn)制轉(zhuǎn)八進(jìn)制,十六進(jìn)制
二進(jìn)制轉(zhuǎn)八進(jìn)制可以使用oct函數(shù)直接轉(zhuǎn)換,而二進(jìn)制轉(zhuǎn)十六進(jìn)制則需要借助int函數(shù)
print(oct(0b1101010)) # 二進(jìn)制轉(zhuǎn)八進(jìn)制
print(hex(int('1101010', 2))) # 二進(jìn)制轉(zhuǎn)十六進(jìn)制
2.5 八進(jìn)制與十六進(jìn)制互相轉(zhuǎn)換
十六進(jìn)制轉(zhuǎn)八進(jìn)制,可以直接使用oct函數(shù),而八進(jìn)制轉(zhuǎn)十六進(jìn)制則需要借助int函數(shù)
print(oct(0x3f2a1)) # 十六進(jìn)制轉(zhuǎn)八進(jìn)制
print(hex(int('125', 8))) # 八進(jìn)制轉(zhuǎn)十六進(jìn)制
最強(qiáng)大的莫過于oct函數(shù),可以將其他三個(gè)進(jìn)制的數(shù)值直接轉(zhuǎn)成八進(jìn)制。
總結(jié)
以上是生活随笔為你收集整理的python0o1010_python进制转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat 启动报:socket cl
- 下一篇: python清屏插件