首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python八进制到十进制

Python八进制到十进制
EN

Stack Overflow用户
提问于 2021-04-28 20:38:30
回答 2查看 154关注 0票数 0

我正在尝试将八进制数转换为十进制数,为此,我认为我应该将八进制数转换为二进制,然后将二进制转换为十进制。为此,我编写了以下代码:

代码语言:javascript
复制
#test

base_8 = input("Enter octal: ")
binar = ""
if base_8 == 0:
      print("The integer value is", 0)
      
for num in reversed(base_8):
  if int(num) > 8:
      print("Invalid")
  else:
      while int(num) > 0:
          r = int(num) % 2
          num = int(num) // 2
          binar = str(r) + binar
      
         
print("Octal in binary:", binar)

decimal = 0
exponent = len(binar) - 1
for digit in binar:
  decimal = decimal + int(digit) * 2 ** exponent
  exponent = exponent - 1
print("The integer value is", decimal)

这适用于3以上的数字,但是,由于八进制转换为二进制的方式,数字0-3的八进制数不能正确显示,导致转换为十进制不正确。例如,八进制数437转换为10011111,而不是100011111,这会影响代码将其转换为十进制。我已经尝试添加代码,以便在数字不大于3的情况下正确打印,但是它被忽略了。你们知道我该怎么纠正这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-28 21:05:19

如果您想坚持使用您的代码,您还可以替换下面的代码行

代码语言:javascript
复制
      while int(num) > 0:

使用

代码语言:javascript
复制
      for i in range(3):

这样,您可以确保始终为每个八进制数字写入三个二进制数字。但是除了代码练习之外,我更喜欢内置函数。

票数 0
EN

Stack Overflow用户

发布于 2021-04-28 21:01:49

你可以通过一些内置的函数来实现这一点-

代码语言:javascript
复制
onum = 324

bnum = bin(int(str(onum), 8))  # octal to binary
dec = int(bnum, 2)  # binary to decimal
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67300423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档