簡體   English   中英

如何讀寫二進制文件?

[英]How can I read and write binary files?

接下來的幾天我無法使用PC,但是我無法解決這個問題。 我只是在玩壓縮算法,為音頻創建了自己的壓縮算法,而我則停留在“輸出到文件”步驟。 所以這是我的問題,希望我能在回來之前弄清楚答案,否則這會引起我的注意。

1)如果我有一個帶有一些整數的numpy X數組(例如int16),如果我打開一個文件對象並執行file.write(X),文件輸出將是什么樣? 數字? 還是數字的ASCII? 還是二進制?

2)根據以上答案,如何將這個文件讀入numpy數組X?

本質上,我的壓縮執行了一些小波和fft變換,在此處進行了一些濾波,並返回了一個包含一些數字的數組,我知道該數組的格式,並且我已經在此處實現了很高的壓縮率,下一步是首先將其轉儲數組轉換為二進制文件。 一旦實現這一目標,我的下一個目標就是對文件/矢量進行某種熵編碼。

任何輸入表示贊賞。

1)寫作:

In [1]: f = open('ints','wb')
In [2]: x = numpy.int16(array([1,2,3]))
Out[2]: array([1, 2, 3], dtype=int16)
In [3]: f.write(x)
In [4]: f.close()

2)閱讀:

In [5]: f = open('ints','wb')
In [6]: x = f.read()
In [7]: x
Out[7]: '\x01\x00\x02\x00\x03\x00'
In [8]: numpy.fromstring(x, dtype=np.uint16, count=3)
Out[8]: array([1, 2, 3], dtype=uint16)

更新:

正如JFSebastian建議的那樣,有更好的方法可以做到這一點,例如使用:

或如Janne Karila建議的那樣使用:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM