嗨,我想做我自己的数字转换器,将输入的二进制,八进制或十六进制转换为相应的十进制值。
我必须使用两个单独的函数,第一个将字母数字转换为数值,第二个通过使用输入基数转换为十进制值来转换结果。
def hexConvert (x):
return int(x, base)
x = str(input("input value to convert to decimal: "))
base = int(input("Base of value to be converted to decimal: "))
print(x, " in base ", base, " = ", hexConvert(x), " in decimal")我知道这工作得很好,而且很健壮。我想学习如何通过手动操作来使用更多的python函数。
这是我目前所拥有的:
number = (input("Enter value to be converted to decimal: "))
base = int(input("Enter the base of the value: "))
for index in number:
print(index)
def hexConvert(number, base):
for number > 0:
if number == 1:
return 1
if number == 2:
return 2
if number == 3:
return 3
if number == 4:
return 4
if number == 5:
return 5
if number == 6:
return 6
if number == "7":
return 7
if number == "8":
return 8
if number == "9":
return 9
if number == "A":
return 10
if number == "B":
return 11
if number == "C":
return 12
if number == "D":
return 13
if number == "E":
return 14
elif number == "F":
return 15
else:
print(number)
nString = ""
def deciConvert(number, base):
number = int(number)
while number > 0:
bString = number%base
nString = nString + str(bString)
number = number // base
print(deciConvert(number, base))我在这一点上迷失了自己,我想我还没有开始任何计算,我真的很感谢你的第二条意见。谢谢!
发布于 2018-05-10 04:59:57
我建议使用泛型encode和dec_to_base函数
ALPHABET = \
"0123456789abcdefghijklmnopqrstuvwxyz"
def encode (n):
try:
return ALPHABET [n]
except IndexError:
raise Exception ("cannot encode: %s" % n)
def dec_to_base (dec = 0, base = 16):
if dec < base:
return encode (dec)
else:
return dec_to_base (dec // base, base) + encode (dec % base)
print (dec_to_base (9))
# 9
print (dec_to_base (10))
# a
print (dec_to_base (255))
# ff
print (dec_to_base (256))
# 100print (dec_to_base (255, base = 2))
# 11111111
print (dec_to_base (256, base = 2))
# 100000000通过提供同构的decode和base_to_dec来完成编码的反转
def decode (s):
try:
return ALPHABET.index(s)
except ValueError:
raise Exception ("cannot decode: %s" % s)
def base_to_dec (s, base = 16, pow = 0):
if s is "":
return 0
else:
return decode (s[-1]) * (base ** pow) + base_to_dec (s[0:-1], base, pow + 1)
print (base_to_dec ('ff'))
# 255
print (base_to_dec ('100'))
# 256并使用不同的基础
print (dec_to_base ('11111111', base = 2))
# 255
print (dec_to_base ('100000000', base = 2))
# 256发布于 2018-05-10 05:03:55
您可以尝试这样做:
def hextodec(str_in, base):
dec = int(str_in, base)
return dec
if __name__ == "__main__":
hex = input()
base = int(input())
hextodec(hex, base)发布于 2020-07-20 22:02:23
我写了一个从任意基数到任意基数的转换函数。这可能有点慢,但它是有效的。
import math
def convert(number, number_base, output_base):
number = str(number)
output = ''
decimal_input = 0
index = len(number)-1
for char in number:
decimal_input += number_base.index(char)*(len(number_base)**index)
index -= 1
index = math.ceil(math.sqrt(decimal_input / len(output_base)))
while index >= 0:
if not (len(output) == 0 and decimal_input // len(output_base)**index == 0):
output += output_base[decimal_input // len(output_base)**index]
decimal_input %= len(output_base)**index
index -= 1
return output要使用它,只需创建两个字符串,如下所示:
decimal = '0123456789'
hex = '0123456789ABCDEF'
hex_100 = convert('100', decimal, hex)
print(hex_100) #64您可以将其用于任何数字基数,也可以类似于:weird = '.g'。在这种情况下,weird将是一个二进制系统,其中“.是0,"g“是1。注意:不能处理浮点数或负数。
https://stackoverflow.com/questions/50261666
复制相似问题