Алгоритм декодирования базы данных как файловой структуры - PullRequest
0 голосов
/ 03 августа 2020

Я работаю над автоматическим c инструментом декодирования файловой структуры базы данных. Файл состоит из заголовка и тела. Информация, известная до попытки декодирования файла: Количество строк Размер тела

Поля могут быть следующими:

  • Строка: один байт для размера, за которым следует фактическая строка, не оканчивающаяся нулем
  • StringAcii: один байт для размера, за которым следует фактическая строка, не оканчивающаяся нулем
  • OptionalString: один байт в качестве флага, один байт для размера, за которым следует фактическая строка, не оканчивающаяся нулем
  • OptionalStringAcii: один байт как флаг, один байт для размера, за которым следует фактическая строка, не оканчивающаяся нулем
  • Число: 32 бита
  • Bool: байт со значением 0 или 1

Также есть файл метаданных для каждого файла, который содержит количество столбцов.

Мой текущий подход таков: вычислить все возможные столбцы типов, но выйду раньше, если я найду комбинацию, которая никогда не будет возможна при просмотре первой строки. Например, столбец 1 = bool, где значение равно 4.

Для каждой возможной комбинации столбцов, которая по крайней мере действительна для первой строки, попробуйте проанализировать всю таблицу. Если ошибок нет и весь байт израсходован в конце, у нас есть возможный кандидат.

Это работает очень хорошо, но слишком медленно, если таблица имеет 25+ столбцов. Как лучше решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...