有许多inbulit函数,如int(八进制),可用于在命令行上将八进制数转换为十进制数,但这些在脚本中无法解决。 int(0671)在脚本中返回0671,其中它表示python命令行上的八进制数的十进制形式。 帮助???
谢谢
答案 0 :(得分:12)
这里有一些混乱 - 迂腐(和电脑一样,最好是迂腐;-),没有“八进制数字”,有字符串是八进制表示< / em> of numbers(和其他字符串,更常见的,它们是十进制表示,十六进制表示)。基础数字(整数)与任何表示形式完全不同(默认情况下显示其十进制表示) - 例如:
>>> 2 + 2
4
>>> '2' + '2'
'22'
引号表示字符串(即表示) - 并注意,它们本身与它们可能代表的数字无关。
因此,解释您的问题的一种方法是您希望将八进制表示转换为十进制表示(等) - 这将是:
>>> str(int('0671', 8))
'441'
注意引用(表示字符串,即表示)。 int(s, 8)
将字符串s
转换为整数作为八进制表示(如果转换不起作用,则引发异常)。 str(n)
生成数字n
的字符串形式(正如我所提到的,默认情况下是十进制表示)。
答案 1 :(得分:2)
首先,int()是无用的。你只需输入0671。
然后,数字以二进制形式存储在计算机本身上,您只是转换其字符串表示形式。数字本身不会改变。因此,这两个都将解析为True,例如,这可能是混淆的来源:
0671 == 0671
0671 == 441
为确保您能让程序输出您想要的基数,最简单的方法是使用字符串格式,如果您希望它位于基数10中:
print "%d" % 0671 # will output the number in base 10