![]() |
|
|
![]()
|
|
| mn2 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 6.3.2006 Репутация: нет Всего: нет |
Для реализации одного очень мне необходимого алгоритма мне нужно изменять файлы (это могут быть как текстовые файлы, так и какие-либо другие, например, картинки или экзешники) на битовом уровне. Поэтому очень удобно было бы представлять любой файл в виде текстого из нулей и единиц, преобразовывать его, и обратно конвертировать в исходное расширения.
ОГРОМНАЯ ПРОСЬБА!!! ПОМОГИТЕ ЭТО СДЕЛАТЬ!!! Заранее благодарю. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
поможем -- не вопрос.
что именно тебе не понятно? + поиском пользуемся: http://forum.vingrad.ru/index.php?showtopic=59909 http://forum.vingrad.ru/index.php?showtopic=54632 -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| chwind |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 15.2.2006 Репутация: 1 Всего: 1 |
1)Любой файл текстовый графический и т.д. храниться на диске как бинарный файл.
2) отсюда следует что лбой файл с люым расширением можно открыть как бинарный файл. В Буилде есть масса способов открыть файл как бинарный, давай остановимся на методах которые предоставляет класс TFileStream, а заодно и пропишем функцию перевода байта в строковую последовательность нолей и едениц
ну вот так вот, на вскидку преобразовали бинарник в строки нолей и нединиц Назад думаю и сам справишься, но хочу предупредить - это все стоит делать только для того чтобы дать пользователю в редакторе менять 0 на 1 и обратно, ежели твоя программа сама будет делать эти замены, то лучше обойтись без строк, компу легче иметь дело непосредственно с битами Это сообщение отредактировал(а) chwind - 7.3.2006, 12:38 |
|||
|
||||
| mn2 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 6.3.2006 Репутация: нет Всего: нет |
Ещё раз спасибо за помощь.
Всё работает. Но есть непонятности: во-первых, что за тип такой BYTE? во-вторых, что значит выражение _b&128? И, плиз, скажите, а реально это же реализовать без класса TFileStream, лучше всего через стандартные потоки, хоть в стиле С, хоть в С++, не важно. Это сообщение отредактировал(а) mn2 - 9.3.2006, 10:48 |
|||
|
||||
| chwind |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 15.2.2006 Репутация: 1 Всего: 1 |
BYTE это все равно что unsigned char
на самом деле BYTE - дефайн, описан он гдето в classes.hpp если не ошибаюсь выглядит так #define BYTE unsigned char выражение _b&128 значит что переменная _b складывается побитно с константой 128 , тоесть 10000000 в бинарном виде. Тоесть результатом операции может быть или 00000000 или 10000000 в зависимости от того сброшен или установлен старший бит в переменной _b соответственно. Реализовать чтение можно разными методами, поищи в хелпе read, stream. З.Ы. Не пойму, чем тебе не нравиться TFileStream ? |
|||
|
||||
| mn2 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 6.3.2006 Репутация: нет Всего: нет |
Спасибо за исчерпывающий ответ
Просто я больше привык работать с обычными потоками. Это сообщение отредактировал(а) mn2 - 10.3.2006, 15:50 |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |