有许多inbulit函数,比如int( octal ),可以用来在命令行上将八进制数转换成十进制数,但这些在脚本中不起作用。int( 0671 )在脚本中返回0671,其中它表示python命令行上八进制数的十进制形式。帮帮忙?
谢谢
发布于 2010-06-15 11:08:31
这里有一些混淆--学究(对于计算机,最好是学究;),没有“八进制数字”,有数字的八进制表示的字符串(以及其他更常见的字符串,它们是它们的十进制表示,十六进制表示)。底层数字(整数)是与任何表示法完全不同的类型(默认情况下显示其小数表示法) --例如:
>>> 2 + 2
4
>>> '2' + '2'
'22'引号表示字符串(即表示) --请注意,就其本身而言,它们与它们可能表示的数字无关。
因此,解释您的问题的一种方法是,您希望将八进制表示转换为十进制表示(等) --这将是:
>>> str(int('0671', 8))
'441'请注意引号(表示字符串,即表示法)。int(s, 8)将字符串s转换为整数作为八进制表示(或者在转换不起作用时引发异常)。str(n)生成数字n的字符串形式(如上所述,默认情况下是十进制表示)。
发布于 2010-06-15 10:50:51
首先,int()是无用的。你可以直接输入0671。
然后,数字以二进制形式存储在计算机本身上,您只需转换其字符串表示形式。数字本身不会改变。因此,这两个都将解析为True,例如,这可能是混淆的根源:
0671 == 0671
0671 == 441为了确保程序以您想要的基数输出数字,最简单的方法是使用字符串格式,如下所示(如果您希望它以10为基数):
print "%d" % 0671 # will output the number in base 10https://stackoverflow.com/questions/3042135
复制相似问题