Подумал я распарсить xm файл.
В начале было норм. В начале - это первые шестьдесят байт.
А потом в доке написано: 4 (dword) Header size.
Считываю по байтам в прямом порядке 0x14 0x01 0x00 0x00.
И как это интерпретировать?
Мне нужен размер в байтах.
Забавно, это значение повторяется для всех опробованных файлов.
Второе забавно: из доки можно вытащить, что хедер имеет размер двадцать байт.
Двадцать = 0x14. Что значит тогда 0x01?
Ладно, положим пока болт на это, и распарсим до следующей схожей неопределенности.
_
Спустя пару часов тупления так и не обнаружил ситуации, когда бы фактическое значение в поле хедера превышало байт.
_
UPD
А внезапно размер не двадцать, ага, а двести семьдесят шесть.
Что более удивляет, первые байты шли прямым порядком, а потом почему-то начинают меняться старший-младший байты.
Так вот если их поменять, то 0x14 0x01 => 0x114 = 276; 276+60 = 336=0x150, и это сходится с xxd.
С какого момента и почему вертятся байты? Надо ли их вертеть дальше?
_
UPD[2]
А, понял.
Были char, вертеть ничего не надо было.
Там, где word - читать второй байт, первый байт.
Где dword - читать четвертый-третий-второй-первый.
Удобно, однако.

@темы: околокода, вродетворчество