Python二进制、八进制、十六进制数字的表示和转换_惠州Python培训
作者:黄君发布时间:2020-12-21分类:Python技术浏览:1382
除了常用的十进制表示法,Python 也支持二进制、八进制和十六进制表示法。这些只是表示方法不同,但是它们表示的含义是一样的,如二进制中的 11 和十进制数中的 3 是一样的。
1. Python 二进制表示法
如十进制中的 100 用二进制表示就是 1100100,那么 100 就可以用 0b1100100 来表示。
>>> a = 0b1100100 # 二进制1100100 >>> a # 查看其值,默认用十进制表示 100 # 对应到十进制就是100
用 0B 也可以表示二进制数,效果和 0b 是一样的,如十进制的 100 也可以用 0B1100100 来表示。
>>> a = 0B1100100 >>> a 100
另外一个问题就是,如果知道了某个数的值,如何知道其二进制的表示法?Python 提供了一个函数 bin(),该函数输入是整数,输出是用二进制表示的字符串。如 bin(100) 就输出字符串 '0b1100100'。
>>> a = bin(100) # 得到十进制数100的二进制表示法 >>> a # 查看二进制表示法的值 '0b1100100' >>> type(a) # 注意返回值是一个字符串 <type 'str'> >>> b = bin(3) # 得到十进制数3的二进制表示法 >>> b '0b11'
如果得到的是字符串,表示一个二进制数,如何将其转换成整数对象呢?可以使用函数 eval()。eval() 输入是字符串,返回值是一个整数对象。
>>> a = eval('0b1100100') # 输入是字符串 >>> type(a) # 返回值类型是整型 <type 'int'> >>> a # 返回值的内容 100
还有一个可以使用的函数就是 int(),其实际上是整型的构造函数。该构造函数可以从字符串对象构造出整型对象,而且在构造时指定进制。和函数 eval() 不同,字符串不能以 0b 开头,并且要指定进制。
还是以 100 为例,输入是字符串 '1100100' 而不是 '0b 1100100'。并且带上进制参数 2,所以就可以用 int('1100100',2) 来构造值为二进制 1100100 的整数对象。
>>> a = int("1100100", 2) # 按照二进制的方式解析字符串"1100100", >>> type(a) # 返回值的类型是整型 <type 'int'> >>> a # 返回值的内容是100 100
int() 还可以指定第二个参数为 0,这时第一个参数就可以带上 0b。int() 看到第二个参数为 0,就会从第一个参数的 0b 上猜出应该按照二进制来解析输入的字符串。
>>> a = int("0b1101", 0) # 第二个参数为0,第一个参数带有0b,所以按照二进制解析 >>> type(a) # 返回值类型是整数 <type 'int'> >>> a # 返回值的值为十进制的13 13
2. Python 八进制表示法
类似于二进制表示法,在数字之前加上 0 用来表示其为八进制数。
>>> a = 012 # 八进制数12,等同于10进制的10 >>> type(a) <type 'int'> >>> a # 查看a的值,默认是用十进制表示的 10
同样的问题,如何将一个整数转换成八进制的字符串?系统提供的函数是 oct(),其输入是整数对象,输出是一个字符串,该字符串也是以 0 开头。如数 oct(10) 就输出 '012'。
>>> out_str = oct(10) # 转换成字符串类型,按照八进制的格式转换 >>> type(out_str) # 返回值的类型是字符串 <type 'str'> >>> out_str # 查看返回值的内容 '012' >>> out_str = oct(100) # 对100进行八进制转换 >>> out_str # 查看转换结果 '0144'
如何从用八进制表示的字符串构造出整数对象呢?前面介绍的 eval() 和 int() 方法依然有效。使用 eval() 时需要输入字符串以 0 开头,这样 eval() 就知道输入的数是八进制表示的。
>>> a = eval('012') # 将字符串转换成整数,八进制格式表示的字符串 >>> type(a) # 查看返回值的类型 <type 'int'> >>> a # 查看返回值的内容 10 >>> a = eval('0144') # 将八进制字符串144转换成整数 >>> a # 查看返回值的内容 100
使用 int() 来将字符串转换成整数,需要将第二个参数设定为 8,表示用八进制来解释该字符串,并且输入字符串不必以 0 开头。但是以 0 开头也不会有问题,因为 0 会被忽略掉,如 02 和 2 表示的意思是一样的。
>>> a = int('144', 8) # 八进制数144,没有以0开头 >>> type(a) # 输出的类型是整数 <type 'int'> >>> a # 查看a的值,十进制表示为100 100 >>> a = int('0144', 8) # 0144等效于144 >>> a # 但是0b11不等效于11 100 >>> a = int('12', 8) # 八进制数12 >>> a 10
和二进制表示法一样,如果第二个参数为 0,并且第一个参数以 0 开头,那么 int() 将试图按照八进制来解析输入的第二个参数。例如:
>>> a = int("0144", 0) # 第二个参数为0,那么从第一个参数猜出进制 >>> type(a) # 由于第一参数以0开头,所以应该是八进制表示 <type 'int'> # 返回值类型是整型 >>> a # 返回值是100,即八进制的144对应十进制的100 100
3. Python 十六进制表示法
十六进制表示法在数字前面加上 0x 或者 0X 来表示,除了用数字 0、1、…、9 这 10 个字符外,还引入了 a、b、c、d、e、f 这 6 个字符,分别表示 10、11、12、13、14 和 15。如十进制中的 15 用十六进制来表示就是 0xF 或者 0Xf。
需要注意的是,a、b、c、d、e、f 也可以用 A、B、C、D、E、F 来表示。
>>> a = 0xf # 0x开头表示是十六进制数 >>> a 15 >>> a = 0XF # 0X开头表示是十六进制数 >>> a 15 >>> a = 0Xf >>> a 15
如果希望将整数转换成十六进制的字符串,可以使用函数 hex()。该函数输入是一个整型对象,输出是字符串。该输出字符串表示用十六进制表示该输入整数的格式。
>>> a = hex(9) # 转换成十六进制表示的字符串 >>> type(a) # 返回的是字符串 <type 'str'> # 查看返回值的内容 >>> a '0x9' >>> b = hex(16) # 将十进制的16转换成十六进制表示的字符串 >>> b '0x10' # 转换后的结果
如果希望做 hex() 的逆操作,可以使用 eval()。
>>> a = 100 >>> b = eval(hex(a)) # 先用hex()转换成十六进制表示的字符串 >>> type(b) # 然后用eval()将字符串转换成整型对象 <type 'int'> # 返回值的类型是整型 >>> b # 经过两轮互逆的运算后还是得到最初的值100 100
如果输入的字符串不带开头的 0x 或者 0X,那么可以用 int() 来构造一个等值的整型对象。例如,还和前面一样,第二个参数为 16。
>>> a = int('64', 16) # 输入是十六进制表示的64 >>> type(a) # 返回值是一个整型对象 <type 'int'> >>> a # 值为100,对应十六进制中的64 100
和前面的二进制、八进制一样,如果第二个参数为 0,第一个参数以 0x 开头,那么 int() 会将第二个参数当作十六进制来解释。例如:
>>> a = int("0x64", 0) # 第二个参数为0,所以从第一个参数猜出进制 >>> type(a) # 第一个参数开头是0x,所以按照十六进制解析 <type 'int'> >>> a # 解析结果是十进制的100 100
另外,int() 函数不仅可以用于转换二进制数、八进制数和十六进制数,也可以用于转换任意进制的数。对于 16,其用 F 后面的 G 来表示,17 用 H 来表示,其他值的表示法以此类推。下面的例子演示了 17 进制数的使用。
>>> int('F', 17) # F表示15 15 >>> int('G', 17) # G表示16 16
相关推荐
- 转职Web前端开发要具备哪些技术?_惠州前端培训学校
- 转行Web前端开发要掌握哪些技术?_惠州前端培训学校
- 如何学习Web前端知识转型?_惠州前端培训学校
- Web前端工程师必须具备哪些JS技巧?_惠州前端培训学校
- Web前端开发|怎么封装几个Vue3中很有用的组合式API?_惠州前端培训学校
- Web前端开发如何使用JS中的arguments?_惠州前端培训学校
- Web前端开发如何在TypeScript中使用基本类型?_惠州前端培训学校
- 优秀Web前端开发工程师必须具备哪些技能?_惠州前端培训学校
- Web前端开发|GraphQL是什么?_惠州前端培训学校
- Web前端工程师要学会哪些技能?_惠州前端培训学校
- Python技术排行
-
- 1Python3文件对象的方法之f.write()_惠州计算机Python软件开发
- 2Python对工作具体有什么帮助
- 3Python3 len()方法_惠州计算机Python培训学校
- 4Python3 tuple 函数_惠州计算机Python培训学校
- 5Python float() 函数_惠州计算机Python培训学校
- 6Python type() 函数_惠州计算机Python培训学校
- 7Python iter() 函数_惠州计算机Python培训学校
- 8Python3 bytes 函数_惠州计算机Python培训学校
- 9Python property() 函数_惠州计算机Python培训学校
- 标签列表
-
- Java (3694)
- 北大青鸟 (3713)
- 软件开发 (3613)
- JAVA (3413)
- UI设计入门 (2093)
- 惠州北大青鸟 (4375)
- 惠州IT培训 (2558)
- UI设计培训 (2090)
- 惠州UI设计培训 (2095)
- 惠州UI设计培训学校 (2090)
- 惠州计算机软件培训 (6260)
- 惠州计算件软件开发 (6260)
- 惠州计算机软件基础 (6261)
- 惠州计算机JAVA培训 (3574)
- 惠州计算机Java软件开发 (3620)
- 惠州计算机JAVA软件开发 (4645)
- 惠州计算机JAVA软件开发学校 (3338)
- 惠州计算机Java软件开发培训 (3338)
- 北大青鸟IT计算机学校 (5048)
- 北大青鸟IT软件学校 (5062)
- 北大青鸟IT学校 (5059)
- 惠州计算机UI设计软件开发 (2088)
- UI设计基础教程 (2088)
- UI设计是什么 (2088)
- UI设计教程 (2088)
- 网站分类
-
- 计算机教程
- 计算机入门
- 职业学校
- 新闻动态
- 专业课程
- 热门技术
- SEO
- 培训教程
- windows
- linux教程
- 系统集成
- 网站开发
- Html5
- 办公软件
- 师资力量
- 热点问答
- 联系我们
- 计算机学校
- 惠州计算机学校
- 河源计算机学校
- 广州计算机学校
- 深圳计算机学校
- 湛江计算机学校
- 佛山计算机学校
- IT计算机培训信息
- 设计专业
- UI
- 影视特效
- 游戏动漫设计
- Photoshop
- AI设计
- 软件教程
- Java技术
- C语言/C++语言培训
- C#
- Python技术
- PHP
- 数据库
- SQL Server
- 网络教程
- 网络安全
- 网络营销
- 软件专业
- 大数据专业
- 前端开发专业
- 软件测试专业
- Python专业
- 软件实施
- 珠海计算机学校
- 初中生学什么好
- 计算机认证
- 文章归档
-
- 2024年11月 (14)
- 2024年10月 (32)
- 2024年9月 (29)
- 2024年8月 (68)
- 2024年7月 (59)
- 2024年6月 (43)
- 2024年5月 (48)
- 2024年4月 (80)
- 2024年3月 (65)
- 2024年2月 (54)
- 2024年1月 (25)
- 2023年12月 (12)
- 2023年11月 (73)
- 2023年10月 (134)
- 2023年9月 (34)
- 2023年8月 (3)
- 2023年7月 (3)
- 2023年6月 (12)
- 2023年5月 (30)
- 2023年4月 (72)
- 2023年3月 (11)
- 2023年2月 (34)
- 2023年1月 (37)
- 2022年12月 (78)
- 2022年11月 (359)
- 2022年6月 (1193)
- 2022年5月 (570)
- 2022年4月 (1567)
- 2022年3月 (982)
- 2022年2月 (54)
- 2022年1月 (182)
- 2021年9月 (308)
- 2021年8月 (1704)
- 2021年7月 (2423)
- 2021年6月 (1806)
- 2021年5月 (1569)
- 2021年4月 (1380)
- 2021年3月 (1255)
- 2021年2月 (709)
- 2021年1月 (1521)
- 2020年12月 (3626)
- 2020年11月 (1646)
- 2020年10月 (1046)
- 2020年9月 (592)
- 最近发表
-
- 清远信息:2024年广清杯清远南粤家政技能大赛举行决赛|||计算机培训机构
- 汕尾信息:陈良川带队到汕尾技师学院调研|||计算机职业技能培训班
- 东莞信息:凤岗凤岗镇组织召开社保参保缴费及劳动用工政策宣讲会|||计算机软件培训学校
- 阳江信息:2024年度注册城乡规划师职业资格考试的合格标准是怎样的?|||计算机软件培训学校
- 阳江信息:职业技能提升补贴对象有哪些?|||大学生计算机培训学校
- 清远信息:清远市首家社保服务合作网点在清城区举办启动仪式|||计算机职业技能培训班
- 汕头信息:招聘658名中高端人才!2024年汕头市引进中高端人才专场招聘会举行|||北大青鸟计算机培训中心
- 东莞信息:广东省社保智能经办现场会在东莞召开|||大学生计算机培训学校
- 东莞信息:东坑镇举办2024年重点群体系列招聘活动|||计算机职业技能培训班
- 东莞信息:万江万江街道成功举办第四届粤菜师傅烹饪技能竞赛|||广州计算机编程培训