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 相关文章推荐
Django imgareaselect手动剪切头像实现方法
May 26 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
Python简单定义与使用二叉树示例
May 11 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
python实现大文件分割与合并
Jul 22 Python
Win10 安装PyCharm2019.1.1(图文教程)
Sep 29 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
使用scrapy实现增量式爬取方式
Jun 21 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 Cookie的一个使用注意点
2008/11/08 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
python生成密码字典的方法
2018/07/06 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
最新大学生自我评价
2013/09/24 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
个人总结怎么写
2015/02/26 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript