使用python脚本将十六进制,八进制数转换为十进制形式

时间:2010-06-15 02:17:57

标签: python hex octal

有许多inbulit函数,如int(八进制),可用于在命令行上将八进制数转换为十进制数,但这些在脚本中无法解决。 int(0671)在脚本中返回0671,其中它表示python命令行上的八进制数的十进制形式。 帮助???

谢谢

2 个答案:

答案 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