RIFF波形文件格式:FourCC值和HEX转换

时间:2013-04-04 23:00:14

标签: parsing hex wave chunks riff

上下文 我正在解析Riff / Wave文件。有documentation标识Riff块中的FourCC值。以下是波形文件的更重要的块。

两个.wav特定块的FourCC ID:

 Chunk ID   "fmt " (0x666D7420)
 Chunk ID   "data" (0x64617461)

因此,这些fmt值应该相等:

 string "fmt "
 Hex "666D7420"
 int "1718449184"

并且,这些数据值相等:

 string "data"
 Hex "64617461"
 int "1684108385"

现在,当我读入有效的.wav文件时,FourCC fmtChunkID fmt int 总是:

 fmt int:
 int "544501094"

数据 int 总是:

 data int:
 int "1635017060"

问题: 为什么记录的Hex值不匹配我从流返回的int?我猜我不明白Hex到Int的转换。

附加: 我在网上找到了具有可疑fmt值“1718449184”的.wav解析器代码。但我发现fmt值“544501094”更多。最后,在Google上搜索“1718449184 AND 544501094”;什么都没有。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

尾段。 请参见十进制的0x20746d66。 (0x20746d66是0x666d7420字节的反转。)

在文件格式中,每个字节必须位于正确的位置。 如果您随意读入内存,取决于您的CPU与文件格式,您可以交换字节顺序。

阅读“Big Endian”和“Little Endian”。有些人会以非常长的篇幅对它进行讨论,但实际上这很容易,而且要理解你是处理文件格式,网络流量,与硬件的接口,还是很重要。许多其他地方。