Сейчас на форуме: jinoweb, bartolomeo, rmn (+4 невидимых) |
eXeL@B —› Программирование —› Парсинг бинарного файла |
Посл.ответ | Сообщение |
|
Создано: 28 мая 2014 18:28 · Личное сообщение · #1 Добрый день, товарищи. Есть у меня бинарный файл проприетарного формата. И хотелось бы мне парсить его, извлекая только некоторые нужные структуры. Т.е. надо бы наваять парсер. Формат известен, мешает только то, что мне не нравится, что получается в результате. Например, есть у нас некое поле - это размер. Следом за размером идёт содержимое. Code:
Здесь размер равен 2, а 11 11 - содержимое этого поля. Некоторые поля фиксированного размера, например, только байт, или только 2, и все поля перемешаны. Если писать парсер в лоб, то он должен читать размер, потом читать содержимое, и т.д. Это как-то коряво, нет ли каких-то движков парсеров, как для парсинга обычного текста? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 28 мая 2014 18:32 · Личное сообщение · #2 поиск оного парсера сопоставим с написанием парсера (на С# например) - IMHO | Сообщение посчитали полезным: daFix |
|
Создано: 28 мая 2014 21:07 · Личное сообщение · #3 ARCHANGEL Да напиши сам, оно хоть и кажется нудным и корявым, но минут за 20 всё можно сделать. Как-то задавался твоим вопросом, нашёл софтину предназначенную для написания парсеров на своём скриптовом языке. Но если ты знаешь хоть один язык программирования, теряется смысл в этой софтине, ибо написания парсера на их скриптовом движке сопоставимо по времени с кодингом на нормальном языке ----- Research For Food | Сообщение посчитали полезным: dosprog |
|
Создано: 28 мая 2014 21:33 · Личное сообщение · #4 ARCHANGEL пишет: Т.е. надо бы наваять парсер. Формат известен, мешает только то, что мне не нравится, что получается в результате Если есть описание, то используйте питоновские конверторы, которые .h переведут в питоновские ctypes ( вы вроде бы начали на нем писать ) Парсеров полно, зависит от языка описания, который опять же нужно знать. |
|
Создано: 29 мая 2014 02:27 · Поправил: dosprog · Личное сообщение · #5 ARCHANGEL пишет: Здесь размер равен 2, а 11 11 - содержимое этого поля. Некоторые поля фиксированного размера, например, только байт, или только 2, и все поля перемешаны. Если писать парсер в лоб, то он должен читать размер, потом читать содержимое, и т.д. Вообще-то как иначе, если не в лоб?.. Например, тот же разбор .ЕХЕ. Или ещё более удачный пример - разбор .OBJ. Он весь состоит из массивов с типом и счётчиком в начале. Раз имеется поле длины для некоторых типов данных, то файл с последовательным доступом. Читать всё подряд, выводя только данные интересующего типа и прочтя их длину для доступа к следующей структуре. Если нужно только поглядеть поля структуры, то была старинная утилита от SEN'а (1993 г.) - Не знаю, насколько поможет. Структуры только заранее известного размера. Например, паскаль-строку в шаблоне StructLook не опишешь. Добавлено:(Хотя, могу и ошибаться. Просто не пользовался всерьёз той утилитой). daFix пишет: ARCHANGEL Да напиши сам, оно хоть и кажется нудным и корявым, но минут за 20 всё можно сделать. [...] Пожалуй, самое простое решение. |
|
Создано: 29 мая 2014 09:38 · Личное сообщение · #6 |
|
Создано: 29 мая 2014 09:47 · Личное сообщение · #7 |
|
Создано: 29 мая 2014 10:27 · Личное сообщение · #8 |
|
Создано: 29 мая 2014 10:38 · Личное сообщение · #9 |
|
Создано: 29 мая 2014 15:12 · Личное сообщение · #10 |
eXeL@B —› Программирование —› Парсинг бинарного файла |
Эта тема закрыта. Ответы больше не принимаются. |