python读取二进制文件以及二进制、十进制、16进制间的转化

来源:互联网 发布:倩女幽魂mac版 编辑:程序博客网 时间:2024/06/05 05:34

多的不解释了直接上代码

#!/usr/bin/python#-*-coding:utf-8-*-import struct###知识点说明##### dec,=struct.unpack('B',binChar) 二进制字节数据转为十进制# bin(dec) 十进制转为二进制# hex(dec) 十进制转为16进制# int('0x10', hexData) 16进制转十进制# binData=struct.pack('B',HexByte) 16进制字节转二进制字节# struct的使用参考链接:http://www.cnblogs.com/jiangzhaowei/p/6138866.html# 十六进制数据转二进制字节流,如efefef作为参数进行转化def HexToBin(hexData):    Hex_byteString = ''    binData = ''    while hexData:        Hex_byteString = hexData[0:2]  # 分割字符串,获取前两个字符        Hex_byte = int(Hex_byteString, 16)  # 字符串转换成16进制        binData += struct.pack('B', Hex_byte)  # 转换成字节流,“B“为格式符,代表一个unsigned char (具体请查阅struct)        hexData = hexData[2:]  # 分割字符串,去掉字符串前两个字符    return binDatadef ShowByte(num):    Bin_voicePackage = ""    Hex_voicePackage = ""    for i in range(num):        voiceString = str(voiceArray[i])        print "==============="         a,=struct.unpack('B',voiceString) #二进制字节转为十进制正整数        print('Bin is:'+voiceString) #显示存储的二进制字节        print('Dec is:'+str(a)) #显示转化成的十进制正整数        print('Hex is:'+hex(a)) #显示转化成的16进制数据        Bin_voicePackage+=str(a) #连接十进制数据        Hex_voicePackage+=hex(a) #连接十六进制数据    print ''.join(voiceArray[:num])    print Bin_voicePackage    print Hex_voicePackagedef DoSomething(readData):    global voiceArray    voiceArray.append(readData)if __name__ == '__main__':    voiceArray = []        #二进制文件读取    binfile = open('voice.spx', 'rb')    try:        while True:            readData = binfile.read(1)            if not readData:                break            DoSomething(readData)    finally:        binfile.close()    #获取前n个字符,并分别用二进制、十进制、十六进制显示,并展现这些字符的连接显示    n=5    ShowByte(n)


原创粉丝点击