對於字串的轉換,不使用python庫的情況下,可利用先確定最高位,進而一次往下判斷其餘位數,例如271.先判斷最高位位於十六進製制第幾位,再判斷為多少,16*16=256,所以位於第三位,大小為1,進而判斷下一位,271-256=15,位於第一位,所以為0x10f
另外一種簡潔的方法:直接進行相除,a為需要進行轉換的數,程式中b為輸入的相應進製數。# -*- 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:
('0x{}'
.format
(str1)
)else
('-0x{}'
.format
(str1)
)if __name__ ==
'__main__'
: main(
)
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)
(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...