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获取当前计算机cpu数量的方法
Apr 18 Python
python比较2个xml内容的方法
May 11 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
python:接口间数据传递与调用方法
Dec 17 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
Python实现图像的垂直投影示例
Jan 17 Python
Python2与Python3的区别详解
Feb 09 Python
django修改models重建数据库的操作
Mar 31 Python
Python super()函数使用及多重继承
May 06 Python
Python中如何处理常见报错
Jan 18 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
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
浅谈php://filter的妙用
2019/03/05 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
python re模块findall()函数实例解析
2018/01/19 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
python实现TCP文件传输
2020/03/20 Python
python3让print输出不换行的方法
2020/08/24 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
抽象类和接口的区别
2012/09/19 面试题
职务任命书范本
2014/06/05 职场文书
安全生产宣传标语
2014/06/06 职场文书
股份合作协议书
2014/09/10 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
深入详解JS函数的柯里化
2021/06/09 Javascript
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers