python資料結構:進位轉化探索

來源:互聯網
上載者:User

標籤:orm   RoCE   表示   return   exce   www.   repr   編號   www   

*********************************第一部分******************************************************************************************************************************************************************************************# 輸入excel的行號,輸出對應列的序號(從0開始編號)# 相當於:26進位用a-z表示,將其轉化為10進位,即:輸入a輸出0,輸入b輸出1,輸入aa輸出26.。。。strs = input(‘請輸入1-2個字母組成的字串:‘).lower()list_char = list(strs)sum = 0 def sub_str(str_a, str_b):  return ord(str_a)-ord(str_b)  for index, str in enumerate(list_char[::-1]):  sum += (sub_str(str, ‘a‘)+1) * 26 ** index print(sum-1)print(list_char[::-1]) *********************************第二部分******************************************************************************************************************************************************************************************題目解讀:即 A=0,Z=25則Z-A=25根據進位換算,得到以下公式:A = (A-A+1)*26^0 -1 = 0Z = (Z-A+1)*26^0 -1 = 25AA = (A-A+1)*26^1 + (A-A+1)*26^0 -1 = 26AZ = (A-A+1)*26^1 + (Z-A+1)*26^0 -1 = 51BA = (B-A+1)*26^1 + (A-A+1)*26^0 -1 = 52ZA = (Z-A+1)*26^1 + (A-A+1)*26^0 -1 = 26*26=676...............ZBFA = (Z-A+1)*26^3 + (B-A+1)*26^2 + (F-A+1)+26^1 + (A-A+)*26^0 -1 如果輸入:ZA,那麼list_char = [‘Z‘,‘A‘],索引為0,1enumerate(list_char[::-1]反轉了列表,即[‘A‘,‘Z‘],目的是反轉索引  *********************************第三部分******************************************************************************************************************************************************************************************那麼,下面由這種方法,將十六進位輸出為十進位#!/usr/bin/env/python35# -*- coding:utf-8 -*-# author: Keekuun # 16進位就是逢16進1def distance(num1, num2):# 求與第一個數(0)的距離if ord(num1) >= 65:# 輸入的是A,B,C,D,E  return ord(num1) - ord(num2) - 7else:# 輸入的是0-9  return ord(num1) - ord(num2)  def sixteen_to_ten(num):  result = 0  for index, value in enumerate(num[::-1]):# 分別將各個位元轉化為10進位,然後求和    result += distance(value, str(‘0‘)) * 16 ** index  # print(‘result=%s‘%result)  return result num = list(input(‘請輸入16進位數(不添加0x):‘).upper())print(sixteen_to_ten(num))  *********************************第四部分*************************************************************************************************************************************************************************************************
  • 十進位:decimal system,每一位最高為9,達不到10

  • 二進位:binary system,每一位最高為1,達不到2

  • 八進位:octonary number system,每一位最高為7,達不到8

  • 十六進位:hexadecimal,每一位最高為 1515 或者 0xf0xf,取不到16(那就是0xG0xG了,:-D)。

推論:

  • 如果一個數為25,則它的進位不低於6進位;

  • 自然也可以這樣理解,如果一個數的某一位的取值範圍為 [0,m?1][0,m?1],則該數即為 mm進位;

>>> 0b101010             # 也即python原生文法是支援二進位表示>> 0xff255            # 自然也支援八進位
向十進位轉換
int(string, base)            # 第一個參數標識:需要轉換的原始的資料,以字串的形式表示            # 第二個參數標識:未經處理資料的base或者叫本身的進位表示            # 2:二進位            # 8:八進位            # 16:表示16進位            # 最終轉化為十進位

 

二進位 ? 十進位
>>> int(‘1010‘, 2)10

 

十六進位 ? 十進位
>>> int(‘f‘, 16)15>>> int(‘0xf‘, 16)15>>> int(‘0xff‘, 16)255

 

八進位 ? 十進位
>>> int(‘17‘, 8)15              # 15 = 7*8^0+1*8^1

 

向16進位轉化
hex(string)            # 也即沒有進位的設定            # 只接受10進位            # 為實現其他進位的轉換,可先轉換為十進位使用int()            # 返回位字串類型
>>> hex(1033)‘0x409‘>>> hex(int(‘101010‘, 2))‘0x2a‘>>> hex(int(‘17‘, 8))‘0xf‘

 

向二進位轉換
bin(十進位整型)
>>> bin(10)‘0b1010‘>>> bin(int(‘ff‘,16))‘0b11111111‘>>> bin(int(‘17‘,8))‘0b1111‘
向八進位轉換
oct()            # 不同於hex/bin            # 通過參數進行判斷            # 其是二進位、十進位、16進位            # 也即oct函數可將任意進位的數轉換為8進位
>>> oct(0b1010)‘012‘>>> oct(11)‘013‘>>> oct(0xf)‘017‘
向  m進位 的轉換

不斷的對m求模取餘,餘數為當前位(低位向高位),商新的被除數,支援商為0。

例,我們以十進位的25向3進位轉換;

25/3 ? 8(1) 
8/3 ? 2(2) 
2/3 ? 0(2)

則25的三進位表示為 221,1?30+2?31+2?32=251?30+2?31+2?32=25

def base(x, m):    ms = []    while x:        ms.append(x%m)        x //= m                    # python 3                    # //:表示整除,保留整數部分                    // /:得float類型    return ms
 

python資料結構:進位轉化探索

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.