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的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
Python学习入门之区块链详解
Jul 25 Python
python中abs&map&reduce简介
Feb 20 Python
Windows下python3.7安装教程
Jul 31 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
python 命名规范知识点汇总
Feb 14 Python
Python参数传递对象的引用原理解析
May 22 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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文本操作类
2006/11/25 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
javascript preload&lazy load
2010/05/13 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
jQuery功能函数详解
2015/02/01 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
Vue CL3 配置路径别名详解
2019/05/30 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
Python MD5加密实例详解
2017/08/02 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
python中return不返回值的问题解析
2020/07/22 Python
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
老师推荐信
2013/10/28 职场文书
数学系毕业生的自我评价
2014/01/10 职场文书
廉洁自律承诺书
2014/03/27 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
工地食品安全责任书
2015/05/09 职场文书
亮剑观后感300字
2015/06/05 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
css height属性中的calc方法详解
2021/06/03 HTML / CSS
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL