希望這有助於一點,我要提到的一切都只是明確:
東西一般要使用十六進制:我用十六進制編輯器,dhex
,你應該可以將apt-get
,yum
或brew
安裝在您喜歡的unix機器上。我將使用this site作爲本資料的大部分源代碼:
正如您所提及的,十六進制的前4個字節表示ASCII字符。在這種情況下,這些字符區域始終:
52 49 46 46 - RIFF
接下來的4個字節表示的塊大小,這是小端。在你的情況下它是:
e8 57 14 00 - 1333224
接下來的8個字節再次表示ASCII字符。在你的情況:
57 41 56 45 - WAVE
66 6d 74 20 - fmt.
接下來的4代表塊大小,這是小端:
10 00 00 00 - 268435456
該卡盤並不代表十進制16,它代表在16位十進制268435456(4個字節1字節是4位)。由於「爲什麼」這些塊是16位的原因,你可以在這個Intro to Audio Programing上閱讀更多內容。這描述了數據部分中的塊將是16位。
01 00
代表音頻格式(小端),1代表PCI在這種情況下。 02 00
表示通道數量,在您的情況下爲2。
接下來的4個字節表示存在數據的每個第二採樣率(小端),或
樣品(幀)的數量。該字段以Hz表示。 - 取自here。
44 ac 00 00 - 44100
接下來的4個字節表示字節速率(小端):
10 b1 02 00 - 1049265
接下來的2個字節表示塊對齊:
這是字節數在一個框架(小端)。這是通過將通道數乘以樣本中的字節數(非位)來計算的。你可以找到更詳細的計算here
04 00 - 4
下一個是你的2個字節代表每個樣品(小端)位,在你的情況下,它是16
10 00 - 16
數據部分:
您目前在您的.wav
文件中沒有數據部分,爲了啓動您首先編寫ASCII的數據部分對於data
像這樣(大端)值:
64 61 74 61 - data
在此之後,你需要你的代表塊2的大小4個字節,你要善於去。在測試方面,如果你還沒有,我會推薦閱讀this guide。我還會重新開始閱讀這篇關於如何構建原始wav文件的帖子,這也應該有助於理解如何「解碼」它們。
你的教程有一個解釋「Little-Endian」格式的鏈接。閱讀。字節的順序如下:0x10 0x00 0x00 0x00。最低有效字節是第一個,因此整個數字是0x00000010。 (將其分解爲「1000」和「0000」根本沒有幫助。) –
這就是崇高的格式,因此我的困惑。謝謝。 – CircularRecursion