python读取二进制文件时,想要获取读取字节的16进制(默认read返回的是ascii码)。
例如文件内容为“helloworld”,若读取1Byte,则读到的数据为’h’,但是想要得到该字符的16进制’0x68’
# cat testdata
helloworld
使用binascii库的b2a_hex将读取到的字节转换为16进制字符串即可
1 #!/usr/bin/python2.7
2 #encoding=utf-8
3
4 import binascii
5
6 fd = open("./testdata", "rb")
7
8 while True:
9 data = fd.read(1)
10 data = binascii.b2a_hex(data)
11 print 'data = {}'.format(data)
12 print type(data)
13 break
运行结果如下:
data = 68
python数据类型的转换:可以通过下面几个方法将来转换对应的数据格式:
chr():把一个整形转换成ASCII码表中对应的单个字符
ord():把ASCII码表中的字符转换成对应的整形
hex():把十进制转换成16进制字符
oct():把十进制转换成八进制字符
bin():把十进制整形转换成二进制字符
emmm,发现使用ord配合hex也是可以实现上面的功能~