Может кто-нибудь объяснить мне это значение размера куска - PullRequest
0 голосов
/ 09 декабря 2018

Итак, у меня есть волновой файл, содержащий 110528 байт, я преобразовал этот волновой файл в шестнадцатеричный формат:

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

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

Первая часть волнового файла - это идентификатор чанка, который равен: "52494646" = "RIFF ", но моя вторая часть -" B8AF0100 ", которая в основном является размером порции в байтах.

Как это значение "B8AF0100" может быть равно размеру волнового файла?Я преобразовал это значение в целое число, которое мне дает: 3098476800, ничего не должно быть с 110528!

1 Ответ

0 голосов
/ 09 декабря 2018

На связанной странице

Порядок байтов по умолчанию, предполагаемый для файлов данных WAVE, имеет младший порядок.Файлы, записанные с использованием схемы упорядочения байтов с обратным порядком байтов, имеют идентификатор RIFX вместо RIFF.

Четыре байта, составляющие размер фрагмента: B8, AF, 01 и 00.Поскольку ваш файл имеет идентификатор RIFF, он имеет порядок байтов.Это означает, что младший байт идет первым.Таким образом, размер чанка составляет не B8AF0100 в шестнадцатеричном, а 0001AFB8.Это оценивает 110520, 8 байтов меньше, чем размер файла.

...