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

使用python脚本将十六进制、八进制数字转换为十进制形式,python,hex,octal,Python,Hex,Octal,有许多inbulit函数,比如int(octall),可以在命令行上将八进制数转换为十进制数,但这些函数在脚本中不起作用。 int(0671)在脚本中返回0671,因为它表示python命令行上八进制数的十进制形式。 帮助 谢谢你首先,int()是无用的。你只需键入0671即可 然后,数字以二进制形式存储在计算机本身上,您只需转换其字符串表示形式。数字本身不会改变。因此,这两种情况都将成为事实,例如,这可能是混淆的根源: 0671 == 0671 0671 == 441 为确保程序以所需的基数

有许多inbulit函数,比如int(octall),可以在命令行上将八进制数转换为十进制数,但这些函数在脚本中不起作用。 int(0671)在脚本中返回0671,因为它表示python命令行上八进制数的十进制形式。 帮助

谢谢你首先,int()是无用的。你只需键入0671即可

然后,数字以二进制形式存储在计算机本身上,您只需转换其字符串表示形式。数字本身不会改变。因此,这两种情况都将成为事实,例如,这可能是混淆的根源:

0671 == 0671
0671 == 441
为确保程序以所需的基数输出数字,最简单的方法是使用字符串格式,如下图所示(如果希望以10为基数):


这里有一些混淆——学究式的(对于计算机来说,最好是学究式的;-),没有“八进制数”,有些字符串是数字的八进制表示(以及其他更常见的字符串,它们的十进制表示,十六进制表示)。基础数字(整数)是与任何表示形式完全不同的类型(默认情况下,显示其十进制表示形式)--例如:

引号表示字符串(即表示法)——请注意,它们本身与所表示的数字无关

所以,一种解释问题的方法是,你想把八进制表示法转换成十进制表示法(等等)——那就是:

>>> str(int('0671', 8))
'441'

注意引用的(表示字符串,即表示)
int(s,8)
将字符串
s
转换为八进制表示形式的整数(如果转换不起作用,则引发异常)
str(n)
生成数字的字符串形式
n
(正如我所提到的,它默认是十进制表示)。

发布一些真实的代码,有真实的结果,这将使人们更容易帮助。实际上,我想制作自己的加密算法和解密算法,加密算法工作良好,可以将字符的ascii值转换为交替的十六进制和八进制表示。但当我尝试解密时,下面出现的问题将帮助您理解:注意:下面的字符串是字符ascii值的交替八进制和六进制///////////////解密/////l=“01630x7401620x6901560x67”f=len(l)k=0 d=0 x=[]用于范围(0,f,4)中的i:g=l[i:i+4]print g k=k+1 if(k%2==0):p=g print p else:p=int(g)print pNote仅键入
0671
在Python 3中不再有效;改为尝试
0o671
(它适用于2.6以后的所有版本)。@MarkDickinson,
0o671
实际上在Python 2.6中工作。我在RHEL5 Linux上用Python 2.6.3进行了测试。@A-B-B:是的,我写得不清楚。“2.6之后的所有版本”的意思是包括2.6。
>>> 2 + 2
4
>>> '2' + '2'
'22'
>>> str(int('0671', 8))
'441'