Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.09.2011, 12:48
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Восклицание Расшифровать текст записи

Здравствуйте, уважаемые форумчане.
У меня вопрос в следующем: есть бинарный файл, я разобрался в его структуре, есть программа, которая создает эти файлы и может читать(исходника, соответственно, нету, структура не описана).
Вот например наименьший кусочек файла: (в Hex виде)
Код:
66 A5 67 A3 70 9A 76 AA 67 A5 67 A3 70 9A
В данном кусочке хранится такая инф-ия:
Структура одной записи:
(без дополнительного одного байта, указывающего на длину либо конец строки). Кстати, так и не понял до сих пор тоже, как понять, что строка определенной длины..что здесь используется символ типа #0 или вначале например число, указывающее на длину.
Код:
Singature:Byte; // $66
Rating:String; // В данном случае длина = 1, значение = "1"
Question:String; // В данном случае длина = 1, значение = "1"
Answer:String; // также 1, значение = "1"
Value1:String; // 1, значение = "1"
Value2:String; // 1, значение = "1"
Value3:String; // 1, значение = "1"
Value4:String; // 1, значение = "1"
Т.е. там имеются такие символы: "1111111", т.е. 7 символов.(+байт сигнатуры+ 7-1 байт для указания длины или символа конца, т.к. здесь для последнего значения4(value4) не указана длина или символ конца строки).
т.е. если изобразить правильнее, то для данного кусочка структура такая:
Код:
Singature :Byte; 
Rating    :String[2]; 
Question  :String[2];
Answer    :String[2];
Value1    :String[2];
Value2    :String[2]; 
Value3    :String[2]; 
Value4    :String[1]; // не стоит символ конца!
Если вы заметили, то непонятно также, а почему же здесь для последней строки не указана длина или символ конца ?!. Вроде бы заметил, что если добавить следующую запись, то в принципе программа вставляет ещё символ $75(в данном случае, т.е. если предудущая запись, описанная выше, имеет такую длину, а не измененную, т.к., думаю что при изменении длины будет символ уже другой). Если в hex редакторе вставить этот символ $75 для текущей записи, то всё верно работает, т.е. тут не особо важный вопрос, наверное просто забывают вставлять его для последней записи).
Вот примерно можно увидеть наглядно эту запись немного "приятнее" для глаз:
Код:
Исходная:
66 A5 67 A3 70 9A 76 AA 67 A5 67 A3 70 9A
а теперь немного структурированнее, смотрим сверху вниз первый столбик, затем на второй столбик, видим что закономерно начинается повторение.
66 
A5 
67      67     
A3      A3
70      70
9A      9A
76
AA
67
A5
Т.к. длина строки может быть разная, и при изменении длины любой строки, всё следующее за этой строкой начинает полностью меняться,
т.е. например сделаем, чтобы вопрос(question) был из двух символов "1", тогда имеем уже:
Код:
66 A5 67 A3 9F 6B A5 7B 96 76 96 74 9F 6B A5
а исходная(с вопросом, где символ "1" один):
66 A5 67 A3 70 9A 76 AA 67 A5 67 A3 70 9A
Никак не могу понять как же здесь хранятся строки, какой алгоритм используется. Думаю, что здесьxor, только вот до сих пор не удалось найти закономерность изменения.
Очень надеюсь на вашу помощь, т.к. сам пока не могу понять.
Если нужны записи другой длины, с другим содержанием или ещё что-то, то скажите.
Помогите, пожалуйста разобраться.
__________________
Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:29.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025