如何使用 Python 将八进制转换为十进制

新手上路,请多包涵

我有这个小家庭作业,我需要将十进制转换为八进制,然后将八进制转换为十进制。我做了第一部分,想不出第二部分来挽救我的生命。第一部分是这样的:

 decimal = int(input("Enter a decimal integer greater than 0: "))

print("Quotient Remainder Octal")
bstring = " "
while decimal > 0:
    remainder = decimal % 8
    decimal = decimal // 8
    bstring = str(remainder) + bstring
    print ("%5d%8d%12s" % (decimal, remainder, bstring))
print("The octal representation is", bstring)

我在这里阅读了如何将其转换: Octal to Decimal ,但我不知道如何将其转换为代码。

原文由 Austin Wildgrube 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 761
2 个回答

从十进制到八进制:

 oct(42) # '052'

八进制转十进制

int('052', 8) # 42

如果您想将八进制作为字符串返回,那么您可能希望将它包装在 str 中。

原文由 martin 发布,翻译遵循 CC BY-SA 4.0 许可协议

这些第一行采用任何十进制数并将其转换为任何所需的数字基数

def dec2base():
    a = int(input('Enter decimal number: \t'))
    d = int(input('Enter expected base: \t'))
    b = ""
    while a != 0:
        x = '0123456789ABCDEF'
        c = a % d
        c1 = x[c]
        b = str(c1) + b
        a = int(a // d)
    return (b)

第二行做同样的事情,但对于给定的范围和给定的小数

def dec2base_R():
    a = int(input('Enter start decimal number:\t'))
    e = int(input('Enter end decimal number:\t'))
    d = int(input('Enter expected base:\t'))
    for i in range (a, e):
        b = ""
        while i != 0:
            x = '0123456789ABCDEF'
            c = i % d
            c1 = x[c]
            b = str(c1) + b
            i = int(i // d)
    return (b)

第三行从任何基数转换回十进制

def todec():
    c = int(input('Enter base of the number to convert to decimal:\t'))
    a = (input('Then enter the number:\t ')).upper()
    b = list(a)
    s = 0
    x = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
    for pos, digit in enumerate(b[-1::-1]):
        y = x.index(digit)
        if int(y)/c >= 1:
            print('Invalid input!!!')
            break
        s = (int(y) * (c**pos)) + s
    return (s)

注意:如果有人需要的话,我也有 GUI 版本

原文由 user8611285 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题