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中的列表推导浅析
Apr 26 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
python进行两个表格对比的方法
Jun 27 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
Python实现代码统计工具
Sep 19 Python
python sorted方法和列表使用解析
Nov 18 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 Python
python实现文字版扫雷
Apr 24 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
python动态规划算法实例详解
Nov 22 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
ip签名探针
2006/10/09 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
python之yield表达式学习
2014/09/02 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
介绍一下Make? 为什么使用make
2016/07/31 面试题
大专自我鉴定范文
2013/10/01 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang