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

问题描述 投票:6回答:4

我有这个小作业,我需要将十进制转换为八进制,然后将八进制转换为十进制。我做了第一部分,无法弄清楚第二部分是为了挽救我的生命。第一部分是这样的:

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但不知道如何将其转换为代码。任何帮助表示赞赏。谢谢。

python decimal octal
4个回答
23
投票

从十进制到八进制:

oct(42) # '052'

八进制到十进制

int('052', 8) # 42

根据您是否要将八进制作为字符串或整数返回,您可能希望分别将其包装在strint中。


0
投票

有人可能会发现这些有用

These first lines take any decimal number and convert it to any desired number base

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)

The second lines do the same but for a given range and a given decimal

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)

The third lines convert from any base back to decimal

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版本


0
投票
def decimal_to_octal(num1):
  new_list = []
  while num1 >= 1:
    num1 = num1/8
    splited = str(num1).split('.')
    num1 = int(splited[0])
    appendednum = float('0.'+splited[1])*8
    new_list.append(int(appendednum))
    decimal_to_octal(num1)    
  return "your number in octal: "+''.join(str(v) for v in new_list[::-1])

print(decimal_to_octal(384))

-3
投票
def decimalToOctal(num1):
  new_list = []
  while num1 >= 1:
    num1 = num1/8
    splited = str(num1).split('.')
    num1 = int(splited[0])
    appendednum = float('0.'+splited[1])*8
    new_list.append(int(appendednum))
    decimalToOctal(num1)    
  return "your number in octal: "+''.join(str(v) for v in new_list[::-1])

print(decimalToOctal(384))
© www.soinside.com 2019 - 2024. All rights reserved.