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算法学习之基数排序实例
Dec 18 Python
python实现进程间通信简单实例
Jul 23 Python
python与caffe改变通道顺序的方法
Aug 04 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
浅析python的Lambda表达式
Feb 27 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python使用requests.session模拟登录
Aug 09 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
Python远程方法调用实现过程解析
Jul 28 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
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
python将图片转base64,实现前端显示
2020/01/09 Python
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
node中使用shell脚本的方法步骤
2021/03/23 Javascript
如何写一份好的自荐信
2014/01/02 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
会计职业生涯规划书
2014/01/13 职场文书
学雷锋月活动总结
2014/04/25 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
毕业生政审意见范文
2015/06/04 职场文书
员工离职证明范本
2015/06/12 职场文书
环保证明
2015/06/23 职场文书
公司业务员管理制度
2015/08/05 职场文书
小学副班长竞选稿
2015/11/21 职场文书