所以我有一个包含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则没有任何内容!
答案 0 :(得分:2)
假定WAVE数据文件的默认字节顺序为little-endian。使用big-endian字节顺序方案写入的文件具有标识符RIFX而不是RIFF。
组成块大小的四个字节为B8
,AF
,01
和00
。由于文件的标识符为RIFF
,因此它是低位优先的。这意味着最低有效字节在前。因此,块大小不是十六进制的B8AF0100
,而是0001AFB8
。计算结果为110520,比文件大小少8个字节。