информация из файла
Добавлено: 01 июн 2005, 09:05
Привет участникам форума!
Не так давно на форуме я задавал вопрос по поводу перекодировщика и доставания программным путем нужной информации из бинарного файла, используя его в шестнадцатеричном виде. И записи информации в поля диалогового окна.
Перекодировщик я сделал. Прекрасно работает. Например:
unsigned char szBuf[] = {0x04, 0x1E, 0x04, 0x42, 0x04, 0x34, 0x04, 0x35, 0x04, 0x3B, 0x00, 0x20, 0x04, 0x1E, 0x04, 0x11, 0x04, 0x18};
Выдает: ОтделОБИ.
0x00, 0x20 – означает пробел, но я его не обрабатываю, пока. Это второстепенный вопрос.
«ОтделОБИ» (в шестнадцатеричном виде) забито в szBuf[] вручную, это не годится.
В реальности информация попадает так:
szBuf[5000] ;
//открытие файла
CFile in;
if(in.Open(m_str, CFile::modeRead) = =NULL){
MessageBox("Ошибка ввода имени файла или файл не найден");
return;
}
//чтение файла
in.Read(szBuf, 5000);
И должно выводиться: «ОтделОБИ» и др. полезная информация (в свои поля). Но поскольку начали разговор об «ОтделОБИ» о нем и продолжим.
Теперь подробнее. Я, насколько толку хватило, проанализировал файл, открыв его в шестнадцатеричном виде. Есть определенная закономерность, перед любой полезной информацией идет схожий шестнадцатеричный код.
Перед «ОтделОБИ» - 31 1B 30 19 06 03 55 04 0B 1E 12. То, что выделено курсивом почти везде разное, жирным шрифтом означает всегда кол-во шестнадцатеричных значений, перекодировав которое получаем нужную информацию.
Необходимо наложить фильтр, что бы в перекодировщик попадала нужная информация, а не все подряд!!!
Да…если смотреть файл простым его открытием, то информация расположена обычно. Т.е. читается слева направо и сверху вниз. Если же в шестнадцатеричном виде, то слева направо, но снизу вверх. Может пригодится (данная информация)…не знаю.
Надеюсь, что более менее вопрос понятен (хотя признаться одолевают сомнения). Если кто-то возьмется за этот вопрос, и ответит, так что бы я понял буду очень признателен! Кстати к признательности могу, если надо, на e-mail сбросить перекодировщик.
Работаю в Visual C++ 6.0.
С уважением, Den!
Не так давно на форуме я задавал вопрос по поводу перекодировщика и доставания программным путем нужной информации из бинарного файла, используя его в шестнадцатеричном виде. И записи информации в поля диалогового окна.
Перекодировщик я сделал. Прекрасно работает. Например:
unsigned char szBuf[] = {0x04, 0x1E, 0x04, 0x42, 0x04, 0x34, 0x04, 0x35, 0x04, 0x3B, 0x00, 0x20, 0x04, 0x1E, 0x04, 0x11, 0x04, 0x18};
Выдает: ОтделОБИ.
0x00, 0x20 – означает пробел, но я его не обрабатываю, пока. Это второстепенный вопрос.
«ОтделОБИ» (в шестнадцатеричном виде) забито в szBuf[] вручную, это не годится.
В реальности информация попадает так:
szBuf[5000] ;
//открытие файла
CFile in;
if(in.Open(m_str, CFile::modeRead) = =NULL){
MessageBox("Ошибка ввода имени файла или файл не найден");
return;
}
//чтение файла
in.Read(szBuf, 5000);
И должно выводиться: «ОтделОБИ» и др. полезная информация (в свои поля). Но поскольку начали разговор об «ОтделОБИ» о нем и продолжим.
Теперь подробнее. Я, насколько толку хватило, проанализировал файл, открыв его в шестнадцатеричном виде. Есть определенная закономерность, перед любой полезной информацией идет схожий шестнадцатеричный код.
Перед «ОтделОБИ» - 31 1B 30 19 06 03 55 04 0B 1E 12. То, что выделено курсивом почти везде разное, жирным шрифтом означает всегда кол-во шестнадцатеричных значений, перекодировав которое получаем нужную информацию.
Необходимо наложить фильтр, что бы в перекодировщик попадала нужная информация, а не все подряд!!!
Да…если смотреть файл простым его открытием, то информация расположена обычно. Т.е. читается слева направо и сверху вниз. Если же в шестнадцатеричном виде, то слева направо, но снизу вверх. Может пригодится (данная информация)…не знаю.
Надеюсь, что более менее вопрос понятен (хотя признаться одолевают сомнения). Если кто-то возьмется за этот вопрос, и ответит, так что бы я понял буду очень признателен! Кстати к признательности могу, если надо, на e-mail сбросить перекодировщик.
Работаю в Visual C++ 6.0.
С уважением, Den!