所以我有一个包含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。
组成块大小的四个字节是B8
、AF
、01
和00
。由于您的文件具有标识符RIFF
,因此它是小端序。这意味着最低有效字节优先。因此,块大小不是十六进制的B8AF0100
,而是0001AFB8
。这将计算为110520,比文件大小小8个字节。