用Python内置函数轻松实现各种进制数之间的转换

0.说明

9个月没有写过Python了,这9个月都在华为的ICT知识海洋里遨游,前段时间刚刚通过了HCIE的认证,想着还是喜欢Python和Linux多些,所以又回来了,后面会有越来越多的Python干货分享给大家,比如后面会打算写一个完整的Linux主机监控项目的教程给初入门的朋友,相信这会是非常不错的体验。

那段时间,曾经有些时候,我需要对各种进制进行转换,因为虽然那会不写Python了,但是还是用Python自带的解释器用来做简单的数学计算,很方便。

在网上找,看有没有方法可以实现各种进制的转换,然后找到的结果都是各网友自己实现的各种一堆的算法,还好当初没有看呢,其实Python的内置函数就可以完美地实现各种进制之间的转换了,非常实用,觉得学计算机专业的一定要会这些转换。

当然,主要是讨论二进制、八进制、十进制、十六进制之间的转换。



1.十进制数转换为其它进制数

(1)十进制数转换为二进制数

通过内置函数bin实现,举例如下:

>>> bin(10)
‘0b1010‘
>>> bin(255)
‘0b11111111‘
>>> bin(65535)
‘0b1111111111111111‘

(2)十进制数转换为八进制数

通过内置函数oct实现,举例如下:

>>> oct(10)
‘0o12‘
>>> oct(255)
‘0o377‘
>>> oct(65535)
‘0o177777‘

(3)十进制数转换为十六进制数

通过内置函数hex实现,举例如下:

>>> hex(10)
‘0xa‘
>>> hex(255)
‘0xff‘
>>> hex(65535)
‘0xffff‘


2.其它进制数转换为十进制数

将二进制数、八进制数和十六进制数转换为十进制数,都是通过内置函数int实现,只是不同的是int所接收的第二个参数不同,可以通过help(int)查看其所接收的参数说明:

>>> help(int)
Help on class int in module builtins:

class int(object)
 |  int(x=0) -> integer
 |  int(x, base=10) -> integer
 |  
 |  Convert a number or string to an integer, or return 0 if no arguments
 |  are given.  If x is a number, return x.__int__().  For floating point
 |  numbers, this truncates towards zero.
 |  
 |  If x is not a number or if base is given, then x must be a string,
 |  bytes, or bytearray instance representing an integer literal in the
 |  given base.  The literal can be preceded by ‘+‘ or ‘-‘ and be surrounded
 |  by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.
 |  Base 0 means to interpret the base from the string as an integer literal.
 |  >>> int(‘0b100‘, base=0)
 |  4

也就是所,int函数中还有个默认参数base,其值默认为10,表示转换为十进制数,如果为2,则表示转换为二进制数,不过需要注意的是,如果需要显示指定base参数,那么第一个参数的数据类型必须为字符串,可以看下面的例子:

>>> int(1010,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int() can‘t convert non-string with explicit base

(1)二进制数转换为十进制数

举例如下:

>>> int(‘1010‘,2)
10
>>> int(‘11111111‘,2)
255
>>> int(‘1111111111111111‘,2)
65535

(2)八进制数转换为十进制数

举例如下:

>>> int(‘12‘,8)
10
>>> int(‘377‘,8)
255
>>> int(‘177777‘,8)
65535

(3)十六进制数转换为十进制数

举例如下:

>>> int(‘a‘,16)
10
>>> int(‘ff‘,16)
255
>>> int(‘ffff‘,16)
65535


3.各种进制数之间的相互转换

上面给的情况都是十进制数与各种进制之间的相互转换,其实二进制转八进制或者二进制转十六进制也是可以的,只是还是需要通过十进制作为桥梁来进行转换,下面举几个例子。

(1)二进制数转换为八进制数

比如需要将二进制数0b1010转换为八进制数。

先转换为十进制数:

>>> int(‘1010‘,2)
10

再转换为八进制数:

>>> oct(10)
‘0o12‘

或者一步到位:

>>> oct(int(‘1010‘,2))
‘0o12‘

(2)八进制数转换为十六进制数

比如需要将八进制数0o377转换为十六进制数。

先转换为十进制数:

>>> int(‘377‘,8)
255

再转换为十六进制数:

>>> hex(255)
‘0xff‘

或者一步到位:

>>> hex(int(‘377‘,8))
‘0xff‘

当然,如果需要八进制转二进制或者其它情况的,也是同样的思路,整个过程的思路都是非常清晰和简洁的。



4.有什么用

仅仅是用作计算的话用处也已经很大了,当然,在以后的项目开发中也完全有可能会用到的。

时间: 2024-10-17 05:11:10

用Python内置函数轻松实现各种进制数之间的转换的相关文章

Python内置函数_数学运算类

本文和大家分享的主要是python内置函数数据运算类相关内容,一起来看看吧,希望对大家学习python 有所帮助. abs abs(x) 求绝对值 · X可以是整型,也可以是复数 · 若X是复数,则返回复数的模 >>> abs(-1)1>>> abs(-3+4j)5.0>>> bin bin(x) 将整数x转换为二进制字符串 >>> bin(2)'0b10'>>> bin(3)'0b11' bool bool([x]

Python内置函数进制转换的用法

使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns a

Python补充--Python内置函数清单

Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print("Hello World!") 在Python教程中,我们已经提到下面一些内置函数:基本数据类型 type()反过头来看看 dir()   help()    len()词典 len()文本文件的输入输出 open()循环设计 range()   enumerate()    zip()循环对象

python基础9 -----python内置函数

python内置函数1 一.python内所有的内置函数: 二.python内常用的内置函数: 三.python内内置函数详解: 1.数学运算函数: 2.集合类函数: 3.逻辑类函数: 4.映射类函数: 5.IO操作:

Python 内置函数sorted()有哪些高级用法?

本文和大家分享的主要是python内置函数sorted()的相关内容,一起来看看吧,希望对大家学习python http://www.maiziedu.com/land/python/有所帮助. 1.对于 Python 内置函数 sorted() ,先拿来跟list(列表)中的成员函数 list.sort() 进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. 2.主要的区别在于, list.sort() 是对已经存在的列表进行操作,进而可以改变

[python基础知识]python内置函数map/reduce/filter

python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法)来迭代遍历每个序列中的元素. 返回bool_func结果为true的元素的序列(注意弄清楚序列是什么意思)http://blog.csdn.net/bolike/article/details/19997465序列参考</a> 如果filter参数值为None,list参数中所有为假的元 素都将被

lambda 表达式+python内置函数

#函数 def f1(a,b): retrun  a+b #lambda方式,形参(a,b):返回值(a+b) f2=lambda a,b : a+b 在一些比较简单的过程计算就可以用lambda python内置函数 abc 获取绝对值 all 循环对象,都为真就返回真否则为假 >>> li[1, 2, 3]>>> all(li)True #0为假 >>> li=[0,1,2,3]>>> all(li)False bool 真假判断

python内置函数(三)

python内置函数目前需要知道的如下: 代码: #!/usr/bin/env python# -*- coding:utf-8 -*-# author by lh #map(函数,可迭代的对象)def f1(x): return x+100ret=map(f1,[1,2,3,4,5])for i in ret: print iprint '---------------------------------------'#hash转换成哈希值,节约内存dic={ 'dvfhsuicbfhascj

python学习系列--python内置函数(一)

先列出所有的python内置函数,可以看到还是挺多的. abs()        求给定数的绝对值. all()          传入一个列表,只有当列表中所有元素都是真时,该函数返回真. any()        传入一个列表,只要列表中有一个元素为真,该函数即返回真. ascii()       执行对象中的__repr__方法.该函数在python2.7中已弃用. bin()         将给定的值转换成二进制. bool()       判断真假. bytearray()