Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сдвинуть биты в файле... Возможно-ли?  (Прочитано 10086 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
FanatWin
Участник

ru
Offline Offline

WWW
« : 16-07-2009 21:49 » 

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

Проблема такая... надо заменить в бинарнике "слово" типа Char на более длинное по отношению к имеющемуся... не получается... С ума сойти... то есть получается, но портится структура файла... надо как я думаю сдвинуть несколько битов к концу файла, а в образованный "прогал" (вместо нулей) дописать более длинное слово (как-бы вставить)... но как это сделать ума не приложу... Здесь была моя ладья...

P.S. Если это важно файл весит 100 Мб...
« Последнее редактирование: 16-07-2009 22:00 от FanatWin » Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 16-07-2009 22:07 » 

FanatWin, если тебе надо вставить в файл некоторое количество байтов, то последовательность такая:

1. Создаешь новый файл.
2. Копируешь из исходного в новый все от начала до позиции вставки.2
3. Дописываешь в новый нужные байты.
4. копируешь из старого в новый все оставшиеся данные.
5. Удаляешь старый файл.
6. Переименовываешь новый в имя старого.

Другой вариант (менее универсальный): скопировать файл целиком в память, обнулить (сделать нулевую длину) файл и записать в него по аналогии с первым вариантом.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 17-07-2009 06:04 » 

Скорей всего у тебя ничего не получится, если файл защищён check sum.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FanatWin
Участник

ru
Offline Offline

WWW
« Ответ #3 : 17-07-2009 06:49 » 

RXL
Да уж таким способом придется заменить несколько тысяч слов и если учитывать размер файла... Жаль Здесь была моя ладья... просто ужас какой-то... С ума сойти...
Я предполагал, что есть какая-то встроенная функция для этого...

Джон защиты нет... Улыбаюсь

Я так понимаю, что другого выбора нет, как только делать, как сказал RXL... Ладно, большое спасибо... если есть ещё способы, то с удовольствием выслушаю...
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 17-07-2009 07:39 » 

Это одноразовая задача? Или это надо запрограммировать? Если просто в бинарке это надо один раз сделать, то воспользуйся каким-нить редактором, например Hex Workshop, он позволяет заменять тексты разной длины.

Иначе придётся делать как RXL сказал. Ну можно конечно ещё считать все 100 МБ в массив байт, произвести замену сразу во всём массиве и сохранить обратно в файл, но практически это будет одно и тоже.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FanatWin
Участник

ru
Offline Offline

WWW
« Ответ #5 : 17-07-2009 08:08 » new

Это программа, которой будут пользоваться другие люди... и естествено, Hex редактор не подходит...
Через массив уже сделал... не совсем одно и тоже, не подошло... по некоторым причинам... Буду делать по первому варианту... Ещё раз спасибо...
Записан

zubr
Гость
« Ответ #6 : 17-07-2009 14:51 » 

Все зависит от того в какое место надо вставлять дополнительные байты. При смещении может нарушиться адресация.
Записан
FanatWin
Участник

ru
Offline Offline

WWW
« Ответ #7 : 17-07-2009 18:04 » 

Там главное не попортить, структуру файла...
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines