西電python 十進位制數轉換為十六進製制數

2021-10-10 10:24:33 字數 2342 閱讀 3749

對於字串的轉換,不使用python庫的情況下,可利用先確定最高位,進而一次往下判斷其餘位數,例如271.先判斷最高位位於十六進製制第幾位,再判斷為多少,16*16=256,所以位於第三位,大小為1,進而判斷下一位,271-256=15,位於第一位,所以為0x10f
# -*- coding: utf-8 -*-

"""created on tue nov 10 15:01:14 2020

@author: 11704

"""def

cishu

(data)

: i =

0while

true

:if data <16:

return

0break

if data <

16**

(i+1

)and data >=

16**i:

return i

break

else

: i +=

1def

weishu

(data1,n)

: i1 =

1while

true

:if data1 <16:

return data1

break

if data1 >=

16**n*i1 and data1 <

16**n*

(i1+1)

:return i1

break

else

: i1 +=

1def

main()

: a =

int(

input()

) e =

0if a <0:

a =-a e=

1 b =[0

,1,2

,3,4

,5,6

,7,8

,9,'a'

,'b'

,'c'

,'d'

,'e'

,'f'

] c = cishu(a)

d = weishu(a,c)

out =[0

]*(c+1

) str1 =

''while

true

:

out[c]

= b[d]

a = a -

16**c*d

if a ==0:

break

c = cishu(a)

d = weishu(a,c)

out.reverse(

)for i in

range

(len

(out)):

str1 = str1 +

str(out[i]

)if e ==0:

print

('0x{}'

.format

(str1)

)else

:print

('-0x{}'

.format

(str1)

)if __name__ ==

'__main__'

: main(

)

另外一種簡潔的方法:直接進行相除,a為需要進行轉換的數,程式中b為輸入的相應進製數。

def

main()

: a,b =

map(

int,

input()

.split())

out =

stri =

'' list1 =

['a'

,'b'

,'c'

,'d'

,'e'

,'f'

]while

true

:if a%b ==0:

a =int(a/b)

else

: a =

int(a//b)

if a ==0:

break

for i in out[::

-1]:

if i >=10:

i = list1[i-10]

stri = stri +

str(i)

print

(stri)

if __name__==

'__main__'

: main(

)

進製轉換 十進位制數轉十六進製制數

十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位制的17在十六進製制中是11,以此類推,十進位制...

python實現十進位制轉換其他進製

這是python實現十進位制轉換二進位制的高階版 步驟與轉化為二進位制相似 1 十進位制除整數 2 餘數壓棧 3 順序出棧 十進位制轉其他進製 defbaseconverter number,base digits 0123456789abcdef srem 1 2兩步 除整數,餘數壓棧 while...

十進位制數與N進製的轉換

1 問題描述 將從鍵盤輸入的十進位制數轉換為n 如二進位制,八進位制,十六進製制 進製資料。2 要求 利用順序棧實現數制轉換問題 include include 定義棧結構 typedef struct stackstack 宣告函式 void settable char table void pu...