python3進製轉換原理

2021-10-06 02:40:33 字數 3163 閱讀 8944

二、python3常用進製轉換辦法

1、轉換函式

三、參考資料

1、任意進製轉換為十進位制

如果數字在n進製下表示為d1d

2…dm

−1dm

d_d_…d_d_

d1​d2​

…dm−

1​dm

​,那麼轉換為十進位制:

n um

=dm∗

n0+d

m−1∗

n1+…

+d2∗

nm−2

+d1∗

nm−1

num=d_*n^+d_*n^+…+d_*n^+d_*n^

num=dm

​∗n0

+dm−

1​∗n

1+…+

d2​∗

nm−2

+d1​

∗nm−

1 3進製逢3進1,只用0、1、2表示3進製的數字,如果3進製數字102轉換成十進位制數字則如下:

n um

=2∗3

0+0∗

31+1

∗32=

11num=2*3^+0*3^+1*3^=11

num=2∗

30+0

∗31+

1∗32

=11

2、十進位制轉換為任意進製

這個過程剛好和上面相反,但是因為沒有辦法提前確定n進製下數字的位數,只能從低位一步一步求解,還以3進製為例,10進製數字11轉換為3進製數字過程如下:

11%3

=211//3=

33%3

=03//

3=11

%3=1

轉換後的數字就是102

3、任意進製和十進位制互相轉換函式

如果用python3編碼實現比較簡單:

#!/usr/bin/env python

# -*-coding:utf-8 -*-

'''@file : binaryconverse.py

@time : 2020/05/08 20:34:07

@author : schiller xu

@version : 1.0

@desc : none

'''#本**只用於簡單的進製轉換

defconverse_int_to

(num,n)

: s=

''while num>0:

s=str(num%n)

+s num=num//n

return s

defconverse_to_int

(num,n)

: s=

0#轉置字串

num=

str(num)[:

:-1]

lens=

len(num)

for i in

range

(len

(num)):

s=s+

int(num[i])*

pow(n,i)

return s

print

(converse_to_int(

102,3)

)

bin、oct、hex函式只有乙個引數,必須有進製的標識;int函式可以單獨指定進製,所以能實現任意進製到十進位制的轉化。

示例如下:

>>

>

bin(10)

'0b1010'

>>

>

bin(

0x14

)'0b10100'

>>

>

>>

>

oct(10)

'0o12'

>>

>

oct(

0b1101

)'0o15'

>>

>

>>

>

hex(10)

'0xa'

>>

>

hex(

0o11

)'0x9'

>>

>

int(

0b1101)13

>>

>

int(

'1101',2

)13>>

>

int(

'1101',3

)37

2、format格式化

示例:

>>

>

"int: ; hex: ; oct: ; bin: "

.format(42

)'int: 42; hex: 2a; oct: 52; bin: 101010'

>>

>

"int: ; hex: ; oct: ; bin: "

.format(42

)'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'

3、二進位制和八進位制相互轉換

這裡再提供一種心算的思路,八進位製用0-7表示數字,二進位制要想「完全」表示0-7得需要3位(8=232^

23),所以八進位制轉二進位制的時候,只需要讓每個數字用二進位制表示展開即可,比如八進位制0o33轉換為二進位制:

0o3-----0b011,0o33展開為0b011011,即0b11011,驗證:

>>

>

bin(

0o33

)'0b11011'

如果是二進位制轉換為八進位制,反過來即可,從二進位制低位開始,每三個數字一組,不夠的補0,再化成八進位制下的數字。

二進位制和十六進製制同樣可以如此轉化,推廣開來,凡是進製之間存在指數關係(三進製和九進製),都能用這個辦法。

python使用format函式進行格式化

python3中的 十進位制 二進位制 八進位制 十六進製制表示及互相轉換

進製之間的轉換(二進位制、八進位制、十進位制、十六進製制)

Python3各種進製之間的轉換方法

二進位制賦值以0b打頭 a 0b1000 八進位制賦值以0o打頭,第乙個是數字0第二個是字母o b 0o1100 十進位制不需要特別標明 c 1110 十六進製制賦值以0x打頭 d 0x1111 其他進製轉二進位制 bin var 其他進製轉八進位制 oct var 其他進製轉十進位制 int va...

python3 各種轉換

int x for x in bytes ser.read all hex x for x in bytes ser.read all 10進製數字轉16進製制 hex 10 0xa 再轉成bytes hex 10 encode utf 8 b 0xa 16進製制數字轉10進製 int 0x0a 1...

python3資料型別轉換

筆記 x為字串或數字 float x 將x轉換為浮點數值 long x base 將x轉換為長整型 int x base 將x轉換為乙個整數。complex real imag 建立乙個複數 repr x 將x轉換為表示式字串 str x 將x轉換為字串 chr x 將整數轉換為字元 tuple x...