python模块介绍- binascii 二进制和ASCII转换
目录
项目简介 1
简介: 2
Uu编码 2
Binhex编码 3
Base64编码 3
QP码 3
CRC校验和 4
二进制转换 4
其他实例 5
项目简介
Python中文库https://bitbucket.org/xurongzhong/python-chinese-library主要基于个人的使用经验,收集一些重要的外部和内部模块的中文教程和实例。发起人是ouyangchongwu#gmail.com,xurongzhong#gmail.com 。
欢迎大家加入分享经验。联系方法:xurongzhong#gmail.com, 微博:http://weibo.com/cizhenshi,python及测试开发群1:113938272,群2:6089740。
文件下载:
1, https://bitbucket.org/xurongzhong/python-chinese-library/downloads。 推荐
2, hg clone克隆所有文件 hg clone https://bitbucket.org/xurongzhong/python-chinese-library。
3, https://bitbucket.org/xurongzhong/python-chinese-library/src 浏览文件,右键点击文件,选另存为下载。
Bug 提交:https://bitbucket.org/xurongzhong/python-chinese-library/issuest。
版本管理
版本号 修订发布时间 修订人 备注
V1.0 2013-12-12 Ouyangchongwu#gmail.com 初始版本, 由Effbot库参考和http://docs.python.org/2.7/library/time.html生成。
参考资料:
官方网址: http://docs.python.org/2.7/library/time.html
Effbot库参考:http://effbot.org/librarybook/
简介:
功能:时间访问和转换。
月下载量:
Python版本:Python 1.4以上。
当前版本:
下载地址:
平台:跨平台
相关模块:
base64 标准模块。
binhex 标准模块。
uu 标准模块。
quopri 标准模块。
binascii模块包含很多用来方法来转换二进制和各种ASCII编码的二进制表示法。通常不直接使用这些功能,而是使用封装模块,如uu, base64或binhex。binascii模块包含用C语言编写更快的低级功能,通常为高级模块所使用。
Uu编码
uu编码格式现在已经比较少使用(http://zh.wikipedia.org/wiki/Uuencode),相关函数binascii.a2b_uu(string)和binascii.b2a_uu(data)这里不做介绍。
更多资料参见:http://docs.python.org/2/library/uu.html
Binhex编码
Binhex用于Macintosh平台。这里暂不做介绍。相关函数有:binascii.rledecode_hqx(data) ,binascii.rlecode_hqx(data),binascii.b2a_hqx(data) ,binascii.crc_hqx(data, crc)。
更多资料参见:http://docs.python.org/2/library/binhex.html
Base64编码
binascii.a2b_base64(string):转换的base64数据块为二进制,并返回二进制数据。一次可以传递多行。和base64. b64decode对应。
binascii.b2a_base64(data):转换二进制数据为一行base64编码的ASCII字符。返回字符串包含换行符。根据base64的标准data的长度最大为57。和base64. b64encode对应。
更多资料参见:http://docs.python.org/2/library/base64.html
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'
其他实例
http://effbot.org/librarybook/binascii.htm有如下实例:
import binascii
text = "hello, mrs teal"
data = binascii.b2a_base64(text)
text = binascii.a2b_base64(data)
print text, "<=>", repr(data)
data = binascii.b2a_uu(text)
text = binascii.a2b_uu(data)
print text, "<=>", repr(data)
data = binascii.b2a_hqx(text)
text = binascii.a2b_hqx(data)[0]
print text, "<=>", repr(data)
# 2.0 and newer
data = binascii.b2a_hex(text)
text = binascii.a2b_hex(data)
print text, "<=>", repr(data)
执行结果:
# python test.py
hello, mrs teal <=> 'aGVsbG8sIG1ycyB0ZWFs\n'
hello, mrs teal <=> '/:&5L;&\\L(&UR<R!T96%L\n'
hello, mrs teal <=> 'D\'9XE\'mX)\'ebFb"dC@&X'
hello, mrs teal <=> '68656c6c6f2c206d7273207465616c'
另外单元测试的代码也可供参考:http://svn.python.org/projects/python/branches/tarek_sysconfig/Lib/test/test_binascii.py
分享到:
相关推荐
2. **binascii模块**: 这个模块提供了许多二进制与ASCII之间的转换函数,例如将十六进制字符串转换为字节,或将字节转换为Base64编码。这对于在不同的数据格式之间进行转换非常有用。 3. **struct模块**: 结构化...
binascii模块在Python中用于处理ASCII和二进制数据之间的转换,例如Base64编码和解码、十六进制转换等。在CircuitPython环境中,由于资源有限,这个库被精简以适应微控制器的内存和性能需求。 adafruit-...
Python2.7 + Binascii模块 十六进制整数转ASCii编码字符串 # -*- coding: utf-8 -*- import binascii #16进制整数转ASCii编码字符串 a = 0x665554 b = hex(a) #转换成相同的字符串即'0x665554' b = b[2:] #截取掉'...
16进制到ASCII的转换过程涉及两个主要步骤:首先将16进制数转换为二进制数,然后根据ASCII码表将二进制数对应为特定的字符。 1. **16进制到二进制转换**: 16进制数由0-F这16个符号组成,分别代表0-15的数值。每个...
在Python的世界里,`binascii`模块是一个非常重要的工具,它提供了在ASCII和二进制数据之间转换的函数。而在MicroPython这个微型的Python实现中,`micropython-binascii`是针对资源有限的环境而优化的版本,以满足...
二进制 :left-right_arrow: ASCII转换器该工具提供了编码-使用Binary-Ascii进行解码。 命令行$ python3 binascii.py -h usage: binascii.py [-h] [-t TEXT] [-c CONVERSION]optional arguments: -h, --help show ...
Python的`binascii`模块是处理ASCII到二进制以及二进制到ASCII转换的关键工具。在编程中,我们经常需要在不同的进制之间转换,例如十进制、二进制、八进制和十六进制。`binascii`模块提供了高效的方法来处理这些转换...
`binascii`模块则用于二进制与ASCII之间的转换。 以下是一个简单的Python示例,将二进制字符串转换为文本: ```python import struct binary_string = b'\x48\x65\x6c\x6c\x6f' # "Hello"的二进制表示 text = ...
例如,在Python中,`binascii`模块提供了`hexlify`和`unhexlify`函数进行十六进制和字节串的转换,而`chr`函数可以把ASCII码值转换为字符。在C++中,可以使用`std::stringstream`和`std::hex`来实现类似功能。 标签...
对于处理二进制文件的需求,Python提供了一个名为`binascii`的模块,该模块可以帮助我们将二进制数值转换为十六进制形式,或者反过来。 - **4.1 `binascii.b2a_hex()`**: 将二进制数值转换为十六进制字符串。 - ...
Python提供了`binascii`库来进行二进制和ASCII之间的转换。例如,以下代码将十六进制字符串转换为32位浮点数: ```python import struct def hex_to_float(hex_str): binary_str = ''.join(format(int(x, 16), '...
- **概述**:`binascii`模块包含了用于处理二进制数据的功能,其中包括一个函数能够将二进制数值转换为十六进制表示形式,同时也支持反向操作。 - **示例**:假设我们有一个二进制数值`binary_value`,可以通过...
- binascii模块:提供二进制和ASCII码的转换。 ### 5. 文件格式 处理特定文件格式的模块。 - xmllib和xml.parsers.expat模块:提供XML解析功能。 - sgmllib、htmllib和htmlentitydefs模块:提供HTML文本的解析。 -...
浮点数转换为十六进制时,通常先将其转换为二进制形式,然后将二进制表示的指数和尾数转换为十六进制。 对于十六进制与十进制转换,我们知道十六进制包含0-9和A-F这16个符号,分别代表0-15。要将十进制数转换为十六...
`binascii`模块提供了用于二进制和ASCII之间的转换功能,其中`b2a_hex()`函数可以将字节串转换为十六进制形式。 **示例代码**: ```python import binascii # 使用binascii模块 result = binascii.b2a_hex(b'0123'...
* `binascii` 模块:提供了二进制 ASCII 编码相关的功能。 文件格式 Python标准库还提供了大量的文件格式相关的模块,用于处理各种文件格式。这些模块包括: * `xmllib` 模块:提供了 XML 解析相关的功能。 * `...
我们可以使用Python内置的`binascii`模块中的`unhexlify`函数来实现这个转换。 ```python import binascii def hexstr_to_string(hex_string): return binascii.unhexlify(hex_string).decode('utf-8') hex_...
Python的`binascii`库提供了`unhexlify()`函数,可以将十六进制字符串转换为二进制数据,而`hexlify()`函数则将二进制数据转换为十六进制字符串。 5. **十六进制数值数组转字符串**:在某些情况下,我们可能有一个...