首页 文章

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

提问于
浏览
1

Context: 我正在解析Riff / Wave文件 . 有documentation标识Riff块中的FourCC值 . 以下是wave文件的更重要的块 .

FourCC ID for two .wav specific chunks:

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"

Question: 为什么没有't the documented Hex value match the int I am returning from the stream? I'猜测我对Hex到Int的转换不了解 .

Extra: 我在网上找到了具有可疑fmt值"1718449184"的.wav解析器代码 . 但我发现更多fmt值"544501094" . 最后,在Google上搜索"1718449184 AND 544501094";没有 .

感谢您的帮助 .

1 回答

  • 2

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

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

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

相关问题