binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法。通常情况不会直接使用这些功能,而是使用像UU,base64编码,或BinHex封装模块。 binascii模块包含更高级别的模块使用的,用C语言编写的低级高效功能。
#coding:utf-8
import binascii
a = b'worker'
#先把worker转换成二进制数据然后在用十六进制表示
b = binascii.b2a_hex(a)
print(b)
#与b2a_hex相反
print(binascii.a2b_hex(b))
#这个功能和b2a_hex()一样
c = binascii.hexlify(a)
print(c)
#这个功能和a2b_hex()一样
print(binascii.unhexlify(c))
######运行结果######
b'776f726b6572'
b'worker'
b'776f726b6572'
b'worker'
python内置函数:
hex():
#把10进制转整形换成16进制
>>> hex(88)
'0x58'
#把浮点型转换成16进制
>>> 1.23.hex()
'0x1.3ae147ae147aep+0'
#内置函数hex和binascii.hexlify()的区别就在于,hex只能接受整形不能接受字符串
>>> hex('88')
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
hex('88')
TypeError: hex() argument can't be converted to hexbin():ba
int([x[,base]]) 转换字符串或者数值为整。参数为字符串的时候,必须制定进制base,默认进制是10,可以取[2,36]或者0。为0的时候,进制信息从字符串中获取。Int的返回为10进制的整数。输入为浮点数时,会进行靠近0截断处理。类似的内置函数有float,long等。
>>> int(0x17)
23
>>> int(-0x17)
-23
>>> int('23')
23
>>> int('1101',2)
13
>>> int('1101',36)
47953
>>> int('1101',8)
577
>>> int(11.92)
11
>>> int(-11.92)
-11
bin():把十进制整形转换成二进制字符
#把十进制整型转换成二进制
>>> bin(88)
'0b1011000'
>>> bin(33)
'0b100001'
oct():把十进制转换成八进制字符
#把十进制转换成八进制
>>> oct(500)
'0764'
>>> oct(488)
'0750'
chr():把一个整形转换成ASCII码表中对应的单个字符 ,该参数必须是在范围[0..255]。
unichr(i)是chr的unicode版本,例如,unichr(97)返回字符串u'a'。参数的取值范围取决于Python如何配置 - 这可能是UCS2 [0..0xFFFF]或UCS4 [0..0x10FFFF]。
#把一个整形转换成ASCII码表中对应的单个字符
>>> chr(98)
'b'
>>> chr(97)
'a'
ord():和chr相反,把ASCII码表中的字符转换成对应的整形
>>> ord('b')
98
>>> ord('c')
99
Hexlify的优势在于可以同时处理多个字符。下面2个操作有一定类似性,返回值都是字符串,不过hexlify去掉了’0x’。
>>> hex(ord('a'))
'0x61'
>>> hexlify('a')
'61'
- 函数列表:
binascii.a2b_uu(string)
binascii.b2a_uu(data)
binascii.a2b_base64(string)
binascii.b2a_base64(data)
binascii.a2b_qp(string[, header])
binascii.b2a_qp(data[, quotetabs, istext, header])
binascii.a2b_hqx(string)
binascii.rledecode_hqx(data)
binascii.rlecode_hqx(data)
binascii.b2a_hqx(data)
binascii.crc_hqx(data, crc)
binascii.crc32(data[, crc])
binascii.b2a_hex(data)
binascii.b2a_hex(data)
binascii.hexlify(data)
binascii.a2b_hex(hexstr)
binascii.unhexlify(hexstr)
异常有:
exception binascii.Error
exception binascii.Incomplete