python处理二进制数据的方法


Posted in Python onJune 03, 2015

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
python中实现定制类的特殊方法总结
Sep 28 Python
Python内置函数OCT详解
Nov 09 Python
详解python中的Turtle函数库
Nov 19 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
python tkinter组件摆放方式详解
Sep 16 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
python实战之用emoji表情生成文字
May 08 Python
python爬取网页版QQ空间,生成各类图表
Jun 02 Python
Python操作CSV格式文件的方法大全
Jul 15 Python
Python读写配置文件的方法
Jun 03 #Python
python操作ssh实现服务器日志下载的方法
Jun 03 #Python
Python实现建立SSH连接的方法
Jun 03 #Python
解密Python中的描述符(descriptor)
Jun 03 #Python
python实用代码片段收集贴
Jun 03 #Python
Perl中著名的Schwartzian转换问题解决实现
Jun 02 #Python
python通过ssh-powershell监控windows的方法
Jun 02 #Python
You might like
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
劣质的PHP代码简化
2010/02/08 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
文本框的字数限制功能jquery插件
2009/11/24 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
餐饮管理自我介绍信
2014/01/15 职场文书
市场营销方案范文
2014/03/11 职场文书
文明之星事迹材料
2014/05/09 职场文书
美术社团活动总结
2014/06/27 职场文书
就业意向书
2014/07/29 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫