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中的测试模块unittest和doctest的使用教程
Apr 14 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
Python pass详细介绍及实例代码
Nov 24 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
python2 与python3的print区别小结
Jan 16 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
深入了解Django中间件及其方法
Jul 26 Python
python标准库OS模块详解
Mar 10 Python
超全Python图像处理讲解(多模块实现)
Apr 13 Python
Python调用C语言程序方法解析
Jul 07 Python
Python自动化操作实现图例绘制
Jul 09 Python
python mock测试的示例
Oct 19 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
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
php数字游戏 计算24算法
2012/06/10 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
php动态函数调用方法
2015/05/21 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
python图像处理之镜像实现方法
2015/05/30 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
python实现微信小程序自动回复
2018/09/10 Python
用python爬取租房网站信息的代码
2018/12/14 Python
python import 上级目录的导入
2020/11/03 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
小学教师国培感言
2014/02/08 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
七年级语文教学反思
2016/03/03 职场文书