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网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
python Crypto模块的安装与使用方法
Dec 21 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
PyCharm第一次安装及使用教程
Jan 08 Python
Python输出指定字符串的方法
Feb 06 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
详解Python 最短匹配模式
Jul 29 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
python中判断数字是否为质数的实例讲解
Dec 06 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执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
初识Node.js
2014/09/03 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
Python中分数的相关使用教程
2015/03/30 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
用Python编写简单的微博爬虫
2016/03/04 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
典型事迹材料范文
2014/12/29 职场文书
创业计划之特色精品店
2019/08/12 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
angular异步验证器防抖实例详解
2022/03/31 Javascript