博客
关于我
python 中的进制转换 整理
阅读量:326 次
发布时间:2019-03-04

本文共 3144 字,大约阅读时间需要 10 分钟。

工作中经常需要用到进制转换, 一直对这方面有一些模糊, 终于有时间把这方面整理一下了.

常用的进制: 二进制bin(), 八进制oct(), 十进制int(), 十六进制hex()
下面我采用python3.6中的源码进行解释, 来自python中的builtins.py

bin(x) 将一个整型数字转换为二进制字符串

def bin(*args, **kwargs):  # NOTE: unreliably restored from __doc__     """    Return the binary representation of an integer.           >>> bin(2796202)       '0b1010101010101010101010'    """    pass

oct() 将一个整型数字转换为一个八进制字符串

def oct(*args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__     """    Return the octal representation of an integer.           >>> oct(342391)       '0o1234567'    """    pass

int() 将一个数字或者字符串转换为一个整型数字

def __init__(self, x, base=10): # known special case of int.__init__        """        int(x=0) -> integer        int(x, base=10) -> integer                Convert a number or string to an integer, or return 0 if no arguments        are given.  If x is a number, return x.__int__().  For floating point        numbers, this truncates towards zero.                If x is not a number or if base is given, then x must be a string,        bytes, or bytearray instance representing an integer literal in the        given base.  The literal can be preceded by '+' or '-' and be surrounded        by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.        Base 0 means to interpret the base from the string as an integer literal.        >>> int('0b100', base=0)        4        # (copied from class doc)        """        pass

hex() 将一个整型数字转换为一个十六进制字符串

def hex(*args, **kwargs):  # NOTE: unreliably restored from __doc__     """    Return the hexadecimal representation of an integer.           >>> hex(12648430)       '0xc0ffee'    """    pass

下面是一个不同进制之间的相互转换:

在这里插入图片描述

要注意的是内置的bin() oct() hex() 的返回值均为 字符串的形式, 而且前面分别带有0b 0o 0x 的前缀;
示例如下:

>>> bin(15)'0b1111'>>> bin(2)'0b10'
>>> oct(16)'0o20'>>> oct(64)'0o100'
>>> hex(16)'0x10'>>> hex(256)'0x100'

实际工作中我们可能需要自己写进制转换, 因为自带的返回值含有前缀;

import os, sysbaseNumDict  = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']  # baseNumDict = [str(x) for x in range(10)] + [chr(x) for x in range(ord('A'), ord("F")) ]
# 二进制转为 十进制def bin2dec(strNum):    return str(int(strNum,2))print(bin2dec("11"))    #  3# 八进制转为十进制def  oct2dec(strNum):    return str(int(strNum,8))print(oct2dec('11'))    # 9# 十六进制转为十进制def  hex2dec(strNum):    return str(int(strNum,16))print(hex2dec('11'))    #  17
# 十进制转为二进制def dec2bin(num: int):	if num == 0:		return 0	elif num < 0:		return "please input a positive num"    bitList = []    while num != 0:        num, res = divmod(num,2)        bitList.append(baseNumDict.get(res))    return ''.join([str(i) for i in bitList][::-1])print(dec2bin("15"))# 八进制 和 十六进制转二进制, 可以采用先转为十进制, 后再转为二进制
# 同理:# 十进制转为八进制def dec2oct(num: int):    if num == 0:		return 0	elif num < 0:		return "please input a positive num"    bitList = []    while num != 0:        num, res = divmod(num, 8)        bitList.append(baseNumDict[res])    return ''.join([str(i) for i in bitList][::-1])print(dec2oct("16"))# 十进制转为十六进制, 只要将上面代码中的 divmod(num,8) 改为 divmod(num,16)

进制转换, 如果直接转一次不能完成的话, 那就先转成其他进制, 间接地转.

参考博客: https://www.cnblogs.com/jsplyy/p/5636246.html

你可能感兴趣的文章
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>