python处理二进制数据的方法
作者:bob_hu924 发布时间:2022-09-08 06:20:09
标签:python,二进制
本文实例讲述了python处理二进制数据的方法。分享给大家供大家参考。具体如下:
#!/usr/env/env python
#-*- coding: cp936 -*-
'''''
add Head Infomation for pcm file
'''
import sys
import struct
import os
__author__ = 'bob_hu, hewitt924@gmail.com'
__date__ = 'Dec 19,2011'
__update__ = 'Dec 19,2011'
def geneHeadInfo(sampleRate,bits,sampleNum):
'''''
生成头信息,需要采样率,每个采样的位数,和整个wav的采样的字节数
'''
rHeadInfo = '\x52\x49\x46\x46'
fileLength = struct.pack('i',sampleNum + 36)
rHeadInfo += fileLength
rHeadInfo += '\x57\x41\x56\x45\x66\x6D\x74\x20\x10\x00\x00\x00\x01\x00\x01\x00'
rHeadInfo += struct.pack('i',sampleRate)
rHeadInfo += struct.pack('i',sampleRate * bits / 8)
rHeadInfo += '\x02\x00'
rHeadInfo += struct.pack('H',bits)
rHeadInfo += '\x64\x61\x74\x61'
rHeadInfo += struct.pack('i',sampleNum)
return rHeadInfo
if __name__ == '__main__':
if len(sys.argv) != 5:
print "usage: python %s inFile sampleRate bits outFile" % sys.argv[0]
sys.exit(1)
fout = open(sys.argv[4],'wb') #用二进制的写入模式
#fout.write(struct.pack('4s','\x66\x6D\x74\x20'))
#写入一个长度为4的串,这个串的二进制内容为 66 6D 74 20
#Riff_flag,afd,fad,afdd, = struct.unpack('4c',fin.read(4))
#读入四个字节,每一个都解析成一个字母
#open(sys.argv[4],'wb').write(struct.pack('4s','fmt '))
#将字符串解析成二进制后再写入
#open(sys.argv[4],'wb').write('\x3C\x9C\x00\x00\x57')
#直接写入二进制内容:3C 9C 00 00 57
#fout.write(struct.pack('i',6000)) #写入6000的二进制形式
#check whether inFile has head-Info
fin = open(sys.argv[1],'rb')
Riff_flag, = struct.unpack('4s',fin.read(4))
if Riff_flag == 'RIFF':
print "%s 有头信息" % sys.argv[1]
fin.close()
sys.exit(0)
else:
print "%s 没有头信息" % sys.argv[1]
fin.close()
#采样率
sampleRate = int(sys.argv[2])
#bit位
bits = int(sys.argv[3])
fin = open(sys.argv[1],'rb')
startPos = fin.tell()
fin.seek(0,os.SEEK_END)
endPos = fin.tell()
sampleNum = (endPos - startPos)
print sampleNum
headInfo = geneHeadInfo(sampleRate,bits,sampleNum)
fout.write(headInfo)
fin.seek(os.SEEK_SET)
fout.write(fin.read())
fin.close()
fout.close()
希望本文所述对大家的Python程序设计有所帮助。
0
投稿
猜你喜欢
- <div id="d1"></div> <script > fu
- 用css属性选择器可以有选择性地对链接样式进行控制,如让所有的外部链接都加一个小图标来标识其是一外部链接。但用css有弊端: 1、只支持Fi
- 保存Python程序,可以使用以下方法:使用编辑器编写代码并保存1、打开Notepad++2、需要新建文本时,点击左上角”文本“,在弹出的菜
- 一、HACK以下两种方法几乎能解决现今所有HACK。1, !important 随着IE7对!important的支持, !imp
- 从某种程度上说,判断一个网页设计师是否优秀,可以从其在WEB开发(或网页设计)中是否合理的采用各种图片格式得出结论。事实上,或许所有人都知道
- 查看并打印matplotlib中所有的colormap(cmap)类型代码如下:方法一import matplotlib.pyplot as
- 主函数(Main Function)是程序中最重要的部分之一,它是程序入口点,也是程序开始执行的地方。1、主函数的定义在 Python 中,
- CSS样式和JavaScript脚本是应该放在外部文件中呢?还是把它们放在页面本身之内呢?如何处理是关于一些性能规则的思维,就这些问题,我们
- 上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫
- 装饰器总结什么是装饰器?处理函数的函数,加一个功能,但是不影响原来函数的内部结构生活中的例子:给手机加一个外壳,外壳保护了手机装饰器有什么用
- 设置密码保护SqlServer数据库备份文件! 备份SqlServer数据库 Backup Database [数据库] To disk=&
- CSS换肤技术一直是一个比较热门的话题,通过给HTML文档不同的CSS样式应用,实现完全不同或风格迥异的页面效果。这样的技术一直为大家所津津
- 代码如下:create table A_TEST ( PAYOUT_ITEM_CODE VARCHAR2(30) not null, FOR
- 1. 不使用全局变量,适当封装2. 兼容性还行~~3. 代码短,可读性凑合~~呵呵~~~~~a. 拖动效果,16行JS<!DOCTYP
- 原因是:It looks like you need to flush stdout periodically (e.g. sys.stdo
- 首先添加一个splice函数:splice:该方法的作用就是从数组中删除一个元素array.splice(index,count,value
- 首先澄清一个应用场景问题。研究(1)中指出,对于结构复杂的网站,不少设计师们喜欢采用960固定宽度布局。但要注意的是,960并不是万能钥匙,
- 本文实例为大家分享了Go实现文件上传的具体代码,供大家参考,具体内容如下文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进
- XMLHTTP对象及其方法------------------MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到R
- 本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下KNN分类算法应该算得上是机器学习中最简单的分类算法了,