日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【python】用python进行进制转换(10进制、2进制、16进制)

發布時間:2023/12/31 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python】用python进行进制转换(10进制、2进制、16进制) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

進制轉換

  • ① 16進制轉10進制
  • ② 16進制轉2進制
  • ③ 10進制轉16進制
  • ④ 10進制轉2進制
  • ⑤ 2進制轉16進制
  • ⑥ 2進制轉10進制

博客由來寫在前面:由于計組老師要求我們課后查一下進制轉換,因為底層的都是01二進制進行編碼的,故而想到用python進行傳統的進制轉換手推理解,配上python本身的函數進行答案對比,故有此篇博客。

每一個進制之間轉換包含倆種算法,一種是直接調用python的進制轉換包,一種是用人工計算進制轉換的思路寫的(其中2進制轉為16進制,是采用2進制局部轉為10進制再轉為16進制的方法)

① 16進制轉10進制

b_16 = '1111'# 方法1 - 調用函數法 b_2 = int(b_16, 16) print(b_2)# 方法2 - 按照計算原則 b_16_len = len(b_16) count = 0 for i in b_16:temp = int(i)count = count + temp*16**(b_16_len-1)b_16_len = b_16_len - 1 print(count)

結果:

4369 4369

② 16進制轉2進制

a_16 = '7A9B'# 方法1 - 調用函數法 a_2 = bin(int(a_16,16))[2:] print(a_2)# 方法2 - 按照計算原則 for i in a_16:if i == '1':print('0001',end='')if i == '2':print('0010',end='')if i == '3':print('0011',end='')if i == '4':print('0100',end='')if i == '5':print('0101',end='')if i == '6':print('0110',end='')if i == '7':print('0111',end='')if i == '8':print('1000',end='')if i == '9':print('1001',end='')if i == 'A':print('1010',end='')if i == 'B':print('1011',end='')if i == 'C':print('1100',end='')if i == 'D':print('1101',end='')if i == 'E':print('1110',end='')if i == 'F':print('1111',end='')

結果:

111101010011011 0111101010011011

③ 10進制轉16進制

c_10 = 1273# 方法1 - 調用函數法 c_16 = hex(c_10) print(c_16)# 方法2 - 按照計算原則 list = [] while c_10//16 != 0:temp = c_10%16if temp <= 9:list.append(temp)if temp == 10:temp = 'a'list.append(temp)if temp == 11:temp = 'b'list.append(temp)if temp == 12:temp = 'c'list.append(temp)if temp == 13:temp = 'd'list.append(temp)if temp == 14:temp = 'e'list.append(temp)if temp == 15:temp = 'f'list.append(temp)c_10 = c_10//16list.append(c_10%16)for i in list[::-1]:print(i,end='')

結果:

0x4f9 4f9

④ 10進制轉2進制

d_10 = 17# 方法1 - 調用函數法 d_2 = bin(d_10) print(d_2)# 方法2 - 按照計算原則 list = [] while d_10//2 != 0:temp = d_10%2list.append(temp)d_10 = d_10//2list.append(d_10%2)for i in list[::-1]:print(i,end='')

結果:

0b10001 10001

⑤ 2進制轉16進制

e_2 = '1011011101'# 方法1 - 調用函數法 e_16 = hex(int(e_2, 2)) print(e_16)# 方法2 - 按照計算原則 ## 1、確定有幾個,最前面的1-4單獨計算,后面的按照4的倍數進行計算 e_2_len = len(e_2) # 總長 e_2_first = e_2_len % 4 # 首位1-4 e_2_count = e_2_len // 4 list = [] # 保存# 2->10->16 就不用傳統方法了,上面都寫過如何分步轉換 if e_2_first!=0:head = hex(int(e_2[0:e_2_first], 2))list.append(head)for i in range(e_2_count):temp = e_2[e_2_first+4*i:e_2_first+4*(i+1)] # 4個為一個局部list.append(hex(int(temp, 2)))for i in list:print(i[2],end='')

結果:

0x2dd 2dd

⑥ 2進制轉10進制

f_2 = '1111'# 方法1 - 調用函數法 f_10 = int(f_2, 2) print(f_10)# 方法2 - 按照計算原則 f_2_len = len(f_2) count = 0 for i in f_2:temp = int(i)count = count + temp*2**(f_2_len-1)f_2_len = f_2_len - 1 print(count)

結果:

15 15

總結

以上是生活随笔為你收集整理的【python】用python进行进制转换(10进制、2进制、16进制)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。