python中的进制转换函数,python的用算法进制转换详解
Python中整数的进制
Python中默认所有整数都是十进制,其表示方法和我们日常看到的没什么区别。任何给定的正数,比如a=49,默认情况下变量A表示一个十进制整数。
Python可以用二进制、八进制和十六进制来表示整数。与十进制记数法不同,这些十进制记数法需要给整数面值加上前缀。
十进制小数——没有前缀。比如338。
二进制——0b或OB前缀,如0b1011001。
八进制——0o前缀,如0o557。
十六进制——0x ——0x,比如0x16f。
一、二进制、八进制、十六进制的整数转换为十进制的整数
十进制数如何转换成二进制,八进制,二进制整数?
方法是直接使用Python的内置函数bin(number)、oct(number)和hex(number)。
简单粗暴。
A=16#a是十进制整数。
bin(a)
Out[39]:0b10000
Oct(a)#十进制到八进制。
Out[40]:0o20
Hex(a)#十进制转换为十六进制。
out[41]: 0x 10 二、十进制的整数转换为二进制、八进制、十六进制的整数
如何将二进制,八进制,十进制整数X转换成十进制整数?
同样的功能也可以,但是这个转换比上面的稍微麻烦一点。
方法是使用int(),一个内置函数。有些人看到这个可能觉得不难。但是,这里很容易出错。
一般来说,我们会大量使用int()。一般我们把一串数字转换成int整数,或者把浮点数四舍五入为零。例如:
int(98999 )
Out[34]:98999
类型( 98999 )
Out[35]:str
int(98999 )
[36]:98999
type(int(98999 ))
out 37 3360 int
int(-3.5)
[38]:-3
int(3.5)
Out [39] 33603但是,如果要用int()进行不同基数之间的转换,那么它的用法就有点变化了。
int()的完整语法是int(x,base=10)。关于这个功能,官方解释如下:
返回基于数字或字符串X构造的integer对象,如果没有给定参数,则返回0。
如果x不是一个数字,或者有一个base参数,那么x必须是一个字符串、字节和一个表示base的整数文字值的bytearray实例。
也就是说,默认基数=10,也就是小数;如果base要改变默认的情况,比如base=2,那么就说明前面的x是二进制整数的时候,x的类型发生了变化,不能是int整数,必须是str字符串类型。
所以,把二进制、八进制和十进制整数X转换成二进制整数有两种情况:
第一种情况很简单。以二进制到十进制的转换为例。二进制整数表示为Python语言规定的形式,人们认为可以被机器识别:‘0b 101’。直接用int()函数就可以了。加上以‘0b’开头的二进制数,此时为int。可以假设它以十进制形式表示二进制数。
如下面给出的例子:
x=0b101
类型(x)
Out[50]:int#此时,type()作用于二进制整数X时,被识别为int类型。
int(x)
Out[51]:5第二种情况更复杂,但可能用得更多。对于人的思维来说,输入一个八进制数,比如342,会直接输入不带前缀‘0o’的342。对于这样的数字,如何转换成二进制,对于我们正常的思维来说是一个很容易的问题。
前面已经解释过int(x,base=10),当base不再是默认的10时,x就不能再是int数据,而必须转换成str字符串类型,这样这个函数才能工作,否则会报错。以下面的例子作为说明。
一个八进制整数754转换成十进制整数是什么结果?
x=754
#首先将八进制整数754转换为字符串类型,然后使用int()函数。
int(str(x),8)
Out[55]:492在思想上更容易接受,但是从实现层面来说,如果754通过在前面加0o直接表示为Python识别的八进制整数,那么直接使用int()函数,出错的可能性会小一些。个人推荐第一种转换方式。
小结
十进制整数转换成二进制,八进制,十六进制整数,直接用Python内置函数bin(number),oct(number),hex(number)就可以了。
二进制、八进制和十六进制整数X被转换成十进制整数。首先,它们被统一表示为Python可识别的样式。二进制前面加前缀0b,八进制前面加前缀0o,十六进制前面加前缀0x,然后直接用int(x)得到需要的十进制整数。
热门IT软件开发工作室,大量免费python视频教程,欢迎在线学习!
本文转自:https://www.jianshu.com/p/8d5771e302a3
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。