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解析树及树的遍历
Feb 03 Python
详解Python的Lambda函数与排序
Oct 25 Python
Python 调用Java实例详解
Jun 02 Python
解决pandas 作图无法显示中文的问题
May 24 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
Nov 26 Python
python关闭占用端口方式
Dec 17 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
matplotlib部件之套索Lasso的使用
Feb 24 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 前一天或后一天的日期
2008/06/28 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php异常处理方法实例汇总
2015/06/24 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
详解python做UI界面的方法
2019/02/27 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
Python实现把类当做字典来访问
2019/12/16 Python
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
SQL SERVER面试资料
2013/03/30 面试题
思想专业自荐信范文
2013/12/25 职场文书
赔偿协议书范本
2014/04/15 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
军人离婚协议书样本
2014/10/21 职场文书
幼师辞职信范文
2015/02/27 职场文书
个人优缺点总结
2015/02/28 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Python实现抖音热搜定时爬取功能
2022/03/16 Python
mysql 获取时间方式
2022/03/20 MySQL