上下文:--我正在解析Riff/Wave文件。有文档标识Riff块中的FourCC值。以下是用于wave文件的更重要的块。
两个特定于的块的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"data int总是:
data int:
int "1635017060"问题:为什么文档中的十六进制值与我从流返回的int不匹配?我猜我不太明白关于妖术到国际转换的一些东西。
Extra: I在网上找到.wav解析器代码,其可疑fmt值为"1718449184“。但我发现更多的fmt值为"544501094“。最后,搜索谷歌的"1718449184和544501094“,什么都没有。
谢谢你的帮助。
发布于 2013-04-04 23:03:49
安迪安。见0x20746d66小数。(0x20746d66是0x666d7420字节的反转。)
在文件格式中,每个字节必须位于正确的位置。如果您随意地在内存中或从内存中读取它们,取决于CPU与文件格式的不同,您可以交换字节顺序。
读一读“大本营”和“小终点”。有些人会详细讨论它,但是它实际上非常容易理解,如果您曾经处理过文件格式、网络流量、与硬件的接口&许多其他地方,那么了解它是很重要的。
https://stackoverflow.com/questions/15823189
复制相似问题