Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)


Posted in Python onApril 30, 2018

使用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 an integer.

oct(x)
Convert an integer number to an octal 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 an integer.

int([number | string[, base]])
Convert a number or string to an integer. If no arguments are given, return 0. If a number is given, return number.__int__(). Conversion of floating point numbers to integers truncates towards zero. A string must be a base-radix integer literal optionally preceded by ‘+' or ‘-‘ (with no space in between) and optionally surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, with ‘a' to ‘z' (or ‘A' to ‘Z') having values 10 to 35. The default base is 10. The allowed values are 0 and 2-36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O, or 0x/0X, as with integer literals in code. Base 0 means to interpret exactly as a code literal, so that the actual base is 2, 8, 10, or 16, and so that int('010', 0) is not legal, while int('010') is, as well as int('010', 8).

hex(x)
Convert an integer number to a hexadecimal 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 an integer.

2进制 8进制 10进制 16进制
2进制 - bin(int(x, 8)) bin(int(x, 10)) bin(int(x, 16))
8进制 oct(int(x, 2)) - oct(int(x, 10)) oct(int(x, 16))
10进制 int(x, 2) int(x, 8) - int(x, 16)
16进制 hex(int(x, 2)) hex(int(x, 8)) hex(int(x, 10)) -

bin()、oct()、hex()的返回值均为字符串,且分别带有0b、0o、0x前缀。

Python进制转换(二进制、十进制和十六进制)实例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 2/10/16 base trans. wrote by srcdog on 20th, April, 2009
# ld elements in base 2, 10, 16.

import os,sys

# global definition
# base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]

# bin2dec
# 二进制 to 十进制: int(str,n=10) 
def bin2dec(string_num):
 return str(int(string_num, 2))

# hex2dec
# 十六进制 to 十进制
def hex2dec(string_num):
 return str(int(string_num.upper(), 16))

# dec2bin
# 十进制 to 二进制: bin() 
def dec2bin(string_num):
 num = int(string_num)
 mid = []
 while True:
 if num == 0: break
 num,rem = divmod(num, 2)
 mid.append(base[rem])

 return ''.join([str(x) for x in mid[::-1]])

# dec2hex
# 十进制 to 八进制: oct() 
# 十进制 to 十六进制: hex() 
def dec2hex(string_num):
 num = int(string_num)
 mid = []
 while True:
 if num == 0: break
 num,rem = divmod(num, 16)
 mid.append(base[rem])

 return ''.join([str(x) for x in mid[::-1]])

# hex2tobin
# 十六进制 to 二进制: bin(int(str,16)) 
def hex2bin(string_num):
 return dec2bin(hex2dec(string_num.upper()))

# bin2hex
# 二进制 to 十六进制: hex(int(str,2)) 
def bin2hex(string_num):
 return dec2hex(bin2dec(string_num))

以下代码用于实现十进制转二进制、八进制、十六进制:

# -*- coding: UTF-8 -*-

# Filename : test.py
# author by : 3water.com

# 获取用户输入十进制数
dec = int(input("输入数字:"))

print("十进制数为:", dec)
print("转换为二进制为:", bin(dec))
print("转换为八进制为:", oct(dec))
print("转换为十六进制为:", hex(dec))

执行以上代码输出结果为:

python3 test.py
输入数字:5
十进制数为:5
转换为二进制为: 0b101
转换为八进制为: 0o5
转换为十六进制为: 0x5

python3 test.py
输入数字:12
十进制数为:12
转换为二进制为: 0b1100
转换为八进制为: 0o14
转换为十六进制为: 0xc

具体实现

十进制到二进制:

def dec2bin(num):
 l = []
 if num < 0:
 return '-' + dec2bin(abs(num))
 while True:
 num, remainder = divmod(num, 2)
 l.append(str(remainder))
 if num == 0:
  return ''.join(l[::-1])

十进制到八进制:

def dec2oct(num):
 l = []
 if num < 0:
 return '-' + dec2oct(abs(num))
 while True:
 num, remainder = divmod(num, 8)
 l.append(str(remainder))
 if num == 0:
  return ''.join(l[::-1])

十进制到十六进制:

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
def dec2hex(num):
 l = []
 if num < 0:
 return '-' + dec2hex(abs(num))
 while True:
 num,rem = divmod(num, 16)
 l.append(base[rem])
 if num == 0:
  return ''.join(l[::-1])

python进2、8、16制转换源码

def cn(x):
 return x.decode('utf-8')
a=int(raw_input(cn('请输入要转换的数字:')))
b=int(raw_input(cn('请输入要转换的进制:')))
def x(n,k):
 if k==16:
  d=n
  s=""
  while d!=0:
   d,f=divmod(d,k)
   if f==10:
    f='a'
   if f==11:
    f='b'
   if f==12:
    f='c'
   if f==13:
    f='d'
   if f==14:
    f='e'
   if f==15:
    f='f'
   s=str(f)+s
  return s
 elif k==2 or k==8:
  d=n
  s=""
  while d!=0:
   d,f=divmod(d,k)
   s=str(f)+s
  return s
c=x(a,b)
print c
#本程序仅支持2,8,16进制,若想支持更多进制请自己动脑该代码吧!

python 十进制整数转换为任意进制(36以内)

def baseN(num, b):
  return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])

这篇文章就结束到这,需要的朋友可以参考一下,希望大家以后多多支持三水点靠木。

Python 相关文章推荐
python 图片验证码代码分享
Jul 04 Python
python实现查询苹果手机维修进度
Mar 16 Python
Python 异常处理的实例详解
Sep 11 Python
Python Tkinter实现简易计算器功能
Jan 30 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
Oct 21 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
django认证系统 Authentication使用详解
Jul 22 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
python版本的仿windows计划任务工具
Apr 30 #Python
Python装饰器原理与用法分析
Apr 30 #Python
Python中pillow知识点学习
Apr 30 #Python
Python生成器定义与简单用法实例分析
Apr 30 #Python
Python迭代器定义与简单用法分析
Apr 30 #Python
python 实现在txt指定行追加文本的方法
Apr 29 #Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 #Python
You might like
动态生成gif格式的图像要注意?
2006/10/09 PHP
php图片验证码代码
2008/03/27 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
PHP的反射机制实例详解
2017/03/29 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
一些mootools的学习资源
2010/02/07 Javascript
JQuery autocomplete 使用手册
2010/04/01 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
js闭包用法实例详解
2016/12/13 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python批量导出导入MySQL用户的方法
2013/11/15 Python
python os模块简单应用示例
2019/05/23 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
时尚圣经:The Fashion Bible
2019/03/03 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
一套VC试题
2015/01/23 面试题
中专毕业生自荐信范文
2013/11/28 职场文书
质量标语大全
2014/06/12 职场文书
应用心理学专业求职信
2014/08/04 职场文书
会计学习心得体会
2014/09/09 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
Python matplotlib多个子图绘制整合
2022/04/13 Python