Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有人能给我解释一下这个块大小值吗_C#_Hex_Wav_Wave - Fatal编程技术网

C# 有人能给我解释一下这个块大小值吗

C# 有人能给我解释一下这个块大小值吗,c#,hex,wav,wave,C#,Hex,Wav,Wave,我有一个包含110528字节的波形文件,我把这个波形文件转换成十六进制: byte[] myWaveFile = System.IO.File.ReadAllBytes(Server.MapPath("/") + "/Funny.wav"); string myHexFile = ToHex(myWaveFile, 0, myWaveFile.Length); // myHexFile = "52494646B8AF0100......"; wave文件的第一部分是块ID,即:“524946

我有一个包含110528字节的波形文件,我把这个波形文件转换成十六进制:

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

// myHexFile = "52494646B8AF0100......";
wave文件的第一部分是块ID,即:“52494646”=“RIFF” 但我的第二部分是“B8AF0100”,它基本上是以字节为单位的块大小

该值“B8AF0100”如何等于波形文件大小?我把这个值转换成它给我的整数:3098476800,与110528无关

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

构成块大小的四个字节是
B8
AF
01
00
。由于您的文件具有标识符
RIFF
,因此它是little endian。这意味着最低有效字节排在第一位。因此,区块大小不是十六进制的
B8AF0100
,而是
0001AFB8
。计算结果为110520,比文件大小小8字节。

来自

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


构成块大小的四个字节是
B8
AF
01
00
。由于您的文件具有标识符
RIFF
,因此它是little endian。这意味着最低有效字节排在第一位。因此,区块大小不是十六进制的
B8AF0100
,而是
0001AFB8
。计算结果为110520,比文件大小小8字节。

好的,我现在明白了,谢谢你,还有最后一个问题,我的机器是little endian对的,所以对于wave文件的第一部分,我得到了“52494646”,我应该得到“46464952”,而不是“52494646”。因为在这个网站上:,它说chunkid=(52494646大端形式)@MehdiSouregi:endian ness只涉及如何将字节组合成多字节整数。块大小是一个整数,因此您需要知道组合字节以构成该整数的顺序。区块ID不是整数,它是四个字节,
R
I
F
F
,必须按该顺序出现。因此,您应该得到前四个字节的
52494646
,而不是
46464952
。好的,我现在明白了,谢谢,最后一个问题,我的机器是little endian right,所以对于wave文件的第一部分,我得到的是“52494646”,而不是“52494646”。因为在这个网站上:,它说chunkid=(52494646大端形式)@MehdiSouregi:endian ness只涉及如何将字节组合成多字节整数。块大小是一个整数,因此您需要知道组合字节以构成该整数的顺序。区块ID不是整数,它是四个字节,
R
I
F
F
,必须按该顺序出现。因此,您应该获得前四个字节的
52494646
,而不是
46464952