Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Преобразование в binary или...


Автор: Noman 24.3.2008, 12:48
Доброго времени суток, коллеги.
Имеется следующая задача, преобразовать текстовый файл в бинарный или как-либо закрыть его для изменения и просмотра его содержимого. Сам файл создается руками и читается через TIniFile. Предполагается создать отдельную программу для преобразования файла, и создать функцию обратного преобразования непосредственно перед чтением файла.
Подскажите пожалуйста, как возможно реализовать процесс преобразования в binary и обратно. Найти в гугле не удалось.

Заранее благодарен.

Автор: Lazin 24.3.2008, 12:52
посто открой текстовый файл как двоичный, и читай его побайтно))

Автор: Noman 24.3.2008, 12:55
Если не сложно, могу я попросить вас привести пример?
Также не совсем понятен процесс преобразования конечного файла из текстового в бинарный.

Автор: EnergoHokum 24.3.2008, 13:08
Как я понял, нужно сделать так, чтобы из файла вытянуть сколь-нибудь внятную информацию сторонними просмотрщиками было невозможно? Если так, то -- шифрование.

Автор: Noman 24.3.2008, 13:19
Да, собственно основной задачей и является невозможность просмотра и извенения данных в файле. Именно поэтому я и  стал рассматиривать преобразование текста в бинарный вид.
Алгоритм в целом таков:
Есть программа, в которую нужно заносить некие данные из текстового файла, доступ к которому для пользователя должен быть закрыт.
Предполагалось написать грубо говоря отдельный криптор, который бы шифровал файл, и декриптор, который бы присутствовал в основной программе и дешифровал данные до его прочтения.

Автор: Lazin 24.3.2008, 13:27
Цитата(Lazin @  24.3.2008,  12:52 Найти цитируемый пост)
посто открой текстовый файл как двоичный, и читай его побайтно)) 

видимо вы работаете с VCL, поэтому можно использовать TFileStream, для работы с файлом. Примеры в справке к билдеру.

Все файлы (бинарные и текстовые) на самом деле одинаковы, физически между ними нет никакой разницы, текстовым файл делает высокоуровневая библиотека, которая позволяет работать не с отдельными байтами, а читать и записывать целые строки. Любой текстовый файл можно открыть как бинарный.

Автор: Noman 24.3.2008, 13:32
Спасибо. Буду пробовать.

Автор: EnergoHokum 24.3.2008, 13:40
А почему-бы не решить этот вопрос правами доступа? Программа выполняется от одного пользователя, которому можно и читать, и писать в заданный файл, а всем остальным (ну, кроме администраторов, вестимо) ничего с файлом сделать нельзя.

Автор: Noman 25.3.2008, 09:07
Проблема решена использованием несложного метода шифрования. Большое всем спасибо за содействие.

Автор: SerK 27.3.2008, 21:30
Кто пробовал текстовые данные преобразовывать в бинарные, тот знает, что буквы в двоичный 
вид не преобразовываются, только цифры. Поэтому для шифрования бинарный вид не подходит.

Автор: korian 28.3.2008, 06:41
Цитата(SerK @  27.3.2008,  20:30 Найти цитируемый пост)
Кто пробовал текстовые данные преобразовывать в бинарные, тот знает, что буквы в двоичный 
вид не преобразовываются, только цифры. Поэтому для шифрования бинарный вид не подходит. 

это шутка была?

Автор: SerK 28.3.2008, 11:09
korian, это вы о чем?

Автор: Lazin 28.3.2008, 12:23
Цитата(SerK @  27.3.2008,  21:30 Найти цитируемый пост)
Кто пробовал текстовые данные преобразовывать в бинарные, тот знает, что буквы в двоичный 
вид не преобразовываются, только цифры. 

буквы не преобразовываются, а вот ASCII символы вполне  smile 

Автор: korian 28.3.2008, 13:25
SerK, 
все из начально представлено в бинарном виде.
похоже, что то о чем вы говорили это перевод числа в строку или наоборот. и бинарный вид тут не причем. все бинарно!

Автор: SerK 10.4.2008, 00:15
korian, тогда, если не трудно подскажите как преобразовать строку так, чтобы 
буквы в бинарном файле не отображались, а заменялись на символы.

Автор: korian 10.4.2008, 00:56
Цитата(SerK @  9.4.2008,  23:15 Найти цитируемый пост)
буквы в бинарном файле не отображались, а заменялись на символы

не понял что требуется... ммм, наверно, можно это так понять:
Код

    char* str1 = "Превед!";
    char* str2 = (char*)L"Медвед!";
    std::ofstream out("1.txt");
    out.write(str1, 7);
    out.write(str2, 14);
    out.close();

если открывать файл notepad'ом, медведя в нем вы не увидите, но он там есть! =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)