Python binascii

Python binascii模块

 

 

转载请标明出处(http://blog.csdn.net/lis_12/article/details/52785755).

用处

主要用于二进制和ASCII互相转换(Convert between binary and ASCII );

包含的函数

函数描述
a2b_uu(string) 将以ascii编码的一行数据转化为二进制,并且返回二进制数据.
b2a_uu(data) 将二进制数据转化为一行以ascii编码的字符,date的最大长度为45.
a2b_base64(string) 将一块base64的数据转换为二进制数据,并返回该二进制数据
b2a_base64(string) 与上面相反
a2b_qp(string[, header]) quoted-printable data->bin,并返回
b2a_qp(data[, quotetabs, istext, header]) 与上面相反
a2b_hqx(string) binhex4格式化的ASCII数据转换为二进制,没有做RLE解压.
b2a_hqx(data) 与上相反
rledecode_hqx(data) 按照binhex4标准,对data执行RLE解压
rlecode_hqx(data) 对data执行binhex方式的压缩,并返回结果
crc_hqx(data, crc) 计算data的binhex4的crc值
crc32(data[, crc]) 根据crc,计算crc32(32位检验和数据,然后将结果&0xffffffff(为了在所有Python版本中生成相同的结果,具体不清楚,求指导…)
b2a_hex(data) 返回二进制数据的16进制的表现形式
a2b_hex(data) 与上面相反
hexlify(data) 返回二进制数据的16进制的表现形式
unhexlify(hexstr) 与上面相反

注:一行数据最多45个字节.

相关内置函数

  1. chr():把一个整形转换成ASCII码表中对应的单个字符
  2. ord():把ASCII码表中的字符转换成对应的整形
  3. hex():把十进制转换成16进制字符
  4. oct():把十进制转换成八进制字符
  5. bin():把十进制整形转换成二进制字符

code,使用示例

#coding:utf-8
import binascii
a = 'hello world'
#先把a转换成二进制数据然后在用十六进制表示
b = binascii.b2a_hex(a)
c = binascii.hexlify(a)#和a2b_hex()功能是一样的,但是推荐用这个函数,具体不清楚= =
print '{0:10s}'.format('b2a_hex'),
for i in range(0,len(b),2):
    print b[i:i+2],
print
#到这是不是发现了,利用b2a_hex()返回的字符串长度为原串的两倍,因为转换为十六进制,一个字节用两个字节表示了
print '{0:10s}'.format('hexlify'),
for i in range(0,len(c),2):
    print c[i:i+2],   
print
print '{0:10s}'.format('ord'),
for i in a:
    print hex(ord(i))[2:],#手动转换为二进制十六进制
print


#与b2a_hex相反
print binascii.a2b_hex(b)
print binascii.unhexlify(c)
'''
result:
b2a_hex    68 65 6c 6c 6f 20 77 6f 72 6c 64
hexlify    68 65 6c 6c 6f 20 77 6f 72 6c 64
ord        68 65 6c 6c 6f 20 77 6f 72 6c 64
hello world
hello world
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

参考链接:

  1. https://docs.python.org/2/library/binascii.html#module-binascii

  2. http://zeping.blog.51cto.com/6140112/1261876

  3. http://www.oschina.net/question/565065_138907

posted @ 2017-09-25 22:17  李涛军  阅读(9199)  评论(0编辑  收藏  举报