python binascii模块详解
['Error', 'Incomplete',
'b2a_hex', 'hexlify' #Hexadecimal representation of binary data. 字符串转16进制
'a2b_hex', 'unhexlify', #Binary data of hexadecimal representation 16进制转字符串
'b2a_base64', #Base64-code line of data. base64加密
'a2b_base64', #Decode a line of base64 data. base64解密
'crc32', #Compute CRC-32 incrementally
'a2b_hqx', 'b2a_hqx', 'crc_hqx', 'rlecode_hqx', 'rledecode_hqx'
'a2b_qp', 'b2a_qp'
'a2b_uu', 'b2a_uu'
]
s = 'abcde'
h = B.b2a_hex(s.encode()) #'6162636465'
h = B.hexlify(s.encode())
crc = B.crc32(h)
s = B.a2b_hex(h).decode()
s = B.unhexlify(h).decode() #'abcde'
h = B.b2a_base64(s.encode()) #b'YWJjZGU=\n'
s = B.a2b_base64(h).decode() #'abcde'
base64 标准模块。
binhex 标准模块。
uu 标准模块。
quopri 标准模块。
binascii模块包含很多用来方法来转换二进制和各种ASCII编码的二进制表示法。通常不直接使用这些功能,而是使用封装模块,如uu, base64或binhex。binascii模块包含用C语言编写更快的低级功能,通常为高级模块所使用。
Uu编码
uu编码格式现在已经比较少使用,相关函数binascii.a2b_uu(string)和binascii.b2a_uu(data)这里不做介绍。
Binhex编码
Binhex用于Macintosh平台。这里暂不做介绍。相关函数有:binascii.rledecode_hqx(data) ,binascii.rlecode_hqx(data),binascii.a2b_hqx(data),binascii.b2a_hqx(data) ,binascii.crc_hqx(data, crc)。
Base64编码
binascii.a2b_base64(string):转换的base64数据块为二进制,并返回二进制数据。一次可以传递多行。和base64. b64decode对应。
binascii.b2a_base64(data):转换二进制数据为一行base64编码的ASCII字符。返回字符串包含换行符。根据base64的标准data的长度最大为57。和base64. b64encode对应。
QP码
Quoted-printable,或QP encoding,没有规范的中文译名,可译为“可打印字符引用编码”、“使用可打印字符的编码”。Quoted-printable是使用可打印的ASCII字符 (如字母、数字与"=")表示各种编码格式下的字符,以便能在7-bit数据通路上传输8-bit数据, 或者更一般地说在非8-bit clean媒体上正确处理数据。这被定义为MIME content transfer encoding,用于e-mail。
QP使用"="开头的转义字符. 一般限制行宽为76,因为有些软件限制了行宽.
binascii.a2b_qp(string[, header]):转换引述打印数据块为二进制,并返回二进制数据。多行可以在同一时间被传递。如果可选参数头存在和真实,下划线将被解码为空格。
实际上,QP码是是把’\x00’转换成’=00’,也就是替换’\x’为’=’。
>>> s ='\x00='
>>> s = '=\x00hello'
>>> import binascii
>>> encoded = binascii.b2a_qp(s)
>>> encoded
'=3D=00hello'
>>> decoded = binascii.a2b_qp(encoded)
>>> print decoded
=hello
>>> print repr(decoded)
'=\x00hello'
CRC校验和
binascii.crc32(data[, crc]):计算的data 的32位校验和CRC-32时,crc为初始CRC 。crc32与ZIP文件的校验和一致。
>>> print binascii.crc32("hello world")
222957957
>>> crc = binascii.crc32("hello")
>>> crc = binascii.crc32(" world", crc) & 0xffffffff
>>> print 'crc32 = 0x%08x' % crc
crc32 = 0x0d4a1185
>>> crc
222957957
为了保证跨平台,可以在crc结果上& 0xffffffff。原因如下:
Changed in version 2.6: The return value is in the range [-2**31, 2**31-1] regardless of platform. In the past the value would be signed on some platforms and unsigned on others. Use & 0xffffffff on the value if you want it to match Python 3 behavior.
Changed in version 3.0: The return value is unsigned and in the range [0, 2**32-1] regardless of platform.
二进制转换
binascii.b2a_hex(data)和binascii.hexlify(data):返回二进制数据的十六进制表示。每个字节被转换成相应的2位十六进制表示形式。因此,得到的字符串是是原数据长度的两倍。
binascii.a2b_hex(hexstr) 和binascii.unhexlify(hexstr):从十六进制字符串hexstr返回二进制数据。是b2a_hex的逆向操作。 hexstr必须包含偶数个十六进制数字(可以是大写或小写),否则报TypeError。
>>> s = 'hello'
>>> b = b2a_hex(s)
>>> print b
68656c6c6f
>>> a2b_hex(b)
'hello'
>>> b = hexlify(s)
>>> print b
68656c6c6f
>>> unhexlify(b)
'hello'
python binascii模块详解相关推荐
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简 ...
- Python—requests模块详解
Python-requests模块详解 来源(博客园@小L小 ):Python-requests模块详解
- python re正则_正则表达式+Python re模块详解
正则表达式(Regluar Expressions)又称规则表达式,在代码中常简写为REs,regexes或regexp(regex patterns).它本质上是一个小巧的.高度专用的编程语言. 通 ...
- python cx_oracle模块详解_cx_Oracle模块详解
1.安装cx_Oracle模块 1-1.环境准备: 1-1-1.oracle client最小安装 instantclient-sqlplus-linux.x64-11.2.0.4.0 instant ...
- Python shutil 模块详解
Python shutil 模块详解 1.模块介绍 2.copytree 示例 3.move 示例 1.模块介绍 import shutil# copy data from file-like obj ...
- Python timeit 模块详解(准确测量小段代码的执行时间)
timeit 模块详解 -- 准确测量小段代码的执行时间 timeit 模块提供了测量 Python 小段代码执行时间的方法.它既可以在命令行界面直接使用,也可以通过导入模块进行调用.该模块灵活地避开 ...
- Python Tkinter模块详解(后续持续补充)
声明:该文章是个人学习中写的,目的是总结及当作工具参考,有一定的借鉴成分,后续若有新发现则补充 目录 Tkinter简介 创建组件基本语法 Tkinter组件汇总 Variable 类 常见参数详解 ...
- python pexpect模块详解_python pexpect原理详解及使用说明
pexpect是python中用于实现SSH,FTP,telnet等命令进行自动化交互,从而无需人工干预实现自动化运维的一个第三方扩展模块.理论的描述过于抽象,这里首先设想一下,如果让您设计一个实现自 ...
- python six模块详解_对python中的six.moves模块的下载函数urlretrieve详解
实验环境:windows 7,anaconda 3(python 3.5),tensorflow(gpu/cpu) 函数介绍:所用函数为six.moves下的urllib中的函数,调用如下urllib ...
最新文章
- 操作系统学习:启动进入实模式
- 2021-04-06 neo4j Service stop failed - service ‘neo4j’ not found 请问怎么解决?
- 操作系统实现(一):从Bootloader到ELF内核
- java socket 远程调用_SpringBoot使用Netty实现远程调用的示例
- 我是如何晋升专家岗的
- KVM虚拟化相关知识简介(脑补)
- ASA防火墙IPSEC ***配置
- 2021必看!java电子书合集,值得收藏!
- 电力IEC61850的基础知识和使用
- 图纸怎么折?(A0,A1,A2,A3の图纸如何折成A4大小)
- 局域网组网 | 交换机常用命令
- 设置页面包含子页面iframe用法
- 三极管共射放大电路调试
- rocketMq配置外网IP
- 博客园编辑器为Markdown时改变图片大小
- std::set用法
- 代币标准--ERC1155协议源码解析
- ettercap局域网内DNS欺骗试验
- RK3288平台 SPI接口调试步骤
- 【深一点学习】BP网络,结合数学推导的代码实现