python二进制文件读取

问题描述

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也是可以实现上面的功能~

你可能感兴趣的:(python)