有人能向我解释一下这个Chunk Size的值吗



所以我有一个包含110528字节的波形文件,我将这个波形文件转换为hex:

byte[] myWaveFile = System.IO.File.ReadAllBytes(Server.MapPath("/") + "/Funny.wav");
string myHexFile = ToHex(myWaveFile, 0, myWaveFile.Length);
// myHexFile = "52494646B8AF0100......";

波形文件的第一部分是Chunk ID,它是:"52494646"="RIFF"但我的第二部分是"B8AF0100",它基本上是以字节为单位的块大小。

这个值"B8AF0100"如何可以等于波形文件大小?我把这个值转换成了它给我的整数:3098476800,与110528没有任何关系!

从链接页面

WAVE数据文件的默认字节顺序是little-endian。使用big-endian字节排序方案编写的文件具有标识符RIFX而不是RIFF。

组成块大小的四个字节是B8AF0100。由于您的文件具有标识符RIFF,因此它是小端序。这意味着最低有效字节优先。因此,块大小不是十六进制的B8AF0100,而是0001AFB8。这将计算为110520,比文件大小小8个字节。

相关内容

最新更新