有人可以向我解释此块大小值

时间:2018-12-09 12:17:10

标签: c# hex wav wave

所以我有一个包含110528字节的wave文件,我将此wave文件转换为十六进制:

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

// myHexFile = "52494646B8AF0100......";

波形文件的第一部分是块ID,即:“ 52494646” =“ RIFF” 但我的第二部分是“ B8AF0100”,它基本上是字节大小的块大小。

该值“ B8AF0100”如何等于波形文件的大小?我将此值转换为整数,它得到的结果是:3098476800,而110528则没有任何内容!

1 个答案:

答案 0 :(得分:2)

linked page

  

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

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