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 相关文章推荐
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Django REST framework内置路由用法
Jul 26 Python
使用Python实现画一个中国地图
Nov 23 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
Python中glob库实现文件名的匹配
Jun 18 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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中time(),date(),mktime()区别介绍
2013/09/28 PHP
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
JsDom 编程小结
2011/08/09 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
js密码强度检测
2016/01/07 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
附答案的Java面试题
2012/11/19 面试题
自荐书格式
2013/12/01 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
阿凡达观后感
2015/06/10 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
详解Python中的进程和线程
2021/06/23 Python
JAVA API 实用类 String详解
2021/10/05 Java/Android
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python