C++ (Qt)QFile file(fileName);if (!file.open(QFile::ReadOnly) return ErrorOpen(file); QDataStream strm(&file); quint32 tagType, tagSize;while (!f.atEnd()) { tagType << strm; // big endian по умолчанию tagSize << strm; // как правило, за типом всегда идет длина тега if (file.errorQFile::ReadOnly) return ErrorRead(file); // разбираем теги switch (tagType) { case 'TAG1': if (!ReadTag1(strm, tagSize)) return false; break; case 'TAG2': if (!ReadTag2(strm, tagSize)) return false; break; .... .... // неизвестный тег, пропускаем default: file.seek(file.pos() + tagSize); }}