多的不解释了直接上代码
#!/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 binData
def 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_voicePackage
def 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)