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