python處理位元據的方法

來源:互聯網
上載者:User
本文執行個體講述了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程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.