# -*-coding:utf-8 -*-
# 支持整数、小数的进制转换,但只限于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 "[功能]:支持整数、小数的进制转换,但只限于 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实现进制转换
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 什么是二进制 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则...
- 狼眼怪谈,今日头条,首发原文地址点这里 狼眼怪谈2017-03-25 19:52 《天道》商战之幕被掀起, 丁元英...