二、python3常用進製轉換辦法
1、轉換函式
三、參考資料
1、任意進製轉換為十進位制
如果數字在n進製下表示為d1d
2…dm
−1dm
d_d_…d_d_
d1d2
…dm−
1dm
,那麼轉換為十進位制:
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...