# -*-coding:utf-8 -*-
# 支持整數(shù)、小數(shù)的進(jìn)制轉(zhuǎn)換,但只限于10,2,8,16之間
def deciaml_to(num_str, to_base, precision=4):
num_str_inte = ''
num_str_deci = ''
if '.' in num_str:
num_str_inte = num_str.split('.')[0]
num_str_deci = num_str.split('.')[-1]
else:
num_str_inte = num_str
num = int(num_str_inte)
base = int(to_base)
result_inte = []
result_deci = []
while num:
remainder = num % base
num /= base
result_inte.append(str(remainder))
if num_str_deci:
num = float('0.' + num_str_deci)
for i in range(int(precision)):
num *= base
t = int(num)
result_deci.append(str(t))
num -= t
result_inte.reverse()
result = result_inte + ['.'] + result_deci
print result
if to_base == '16':
res = []
for i in result:
if i != '.':
if int(i) >= int('10'):
i = chr(int(i) - 10 + ord('a'))
res.append(i)
return ''.join(res)
else:
return ''.join(result)
def to_decimal(num_str, from_base):
s = []
res1 = 0
res2 = 0
num_str_inte = ''
num_str_deci = ''
base = int(from_base)
for i in num_str:
if i.isalpha():
s.append(str(ord(i) - ord('a') + 10))
else:
s.append(i)
if '.' in s:
n = s.index('.')
num_str_inte = s[:n]
num_str_deci = s[n + 1:]
else:
num_str_inte = s
for i in range(len(num_str_inte)):
res1 += int(num_str_inte[i]) * (base**(len(num_str_inte) - 1 - i))
for i in range(len(num_str_deci)):
res2 += int(num_str_deci[i]) * (base**(-i - 1))
return str(res1 + res2)
if __name__ == '__main__':
print "[功能]:支持整數(shù)、小數(shù)的進(jìn)制轉(zhuǎn)換,但只限于 10,2,8,16之間"
num_str = raw_input('[num]:')
from_base = raw_input('[from_base]:')
to_base = raw_input('[to_base]:')
if from_base == '10':
precision = raw_input('[precision]:')
print deciaml_to(num_str, to_base, precision)
elif to_base == '10':
print to_decimal(num_str, from_base)
else:
precision = raw_input('[precision]:')
temp = to_decimal(num_str, from_base)
print deciaml_to(temp, to_base, precision)
python實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 初始16進(jìn)制字符串放在一個(gè)列表中 結(jié)果
- 什么是二進(jìn)制 二進(jìn)制是計(jì)算技術(shù)中廣泛采用的一種數(shù)制。二進(jìn)制數(shù)據(jù)是用0和1兩個(gè)數(shù)碼來(lái)表示的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則...
- 狼眼怪談,今日頭條,首發(fā)原文地址點(diǎn)這里 狼眼怪談2017-03-25 19:52 《天道》商戰(zhàn)之幕被掀起, 丁元英...