Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22

Замена hex по адресу

25.02.2015, 09:00. Показов 4251. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть такая задача:
Имеем некий файл (скажем bin), необходимо внести изменения (взятые из поля edit диалога) по определенному адресу.
Например есть:
Code
1
2
3
4
5
....
00010a20 - 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
00010a30 - 00 01 02 03 04 05 06 07  08 00 00 00 00 00 00 00
00010a50 - 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
....
Необходимо внести изменения только по адресу 00010a30, например:
Code
1
00010a30 - 00 1a 2b 3c 11 22 33 44  55 00 00 00 00 00 00 00.
Я новичок в программировании, основную часть программы написал - сам диалог, открытие и закрытие файла, а вот с редактированием конкретной части файла загвоздка.... Может есть какое-нибудь готовое решение?
Спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2015, 09:00
Ответы с готовыми решениями:

Поиск и замена числа в HEX
Доброго времени суток, прошу прощения, если возникший вопрос задаю не в тот раздел форума. Подскажите, пожалуйста, как найти число 604 в...

Чтение и запись по HEX-адресу
Приветствую всех! Есть задача: скажем, есть некий файл такого вида (в HEX): 0x00000000: 00 AB 87 09 67 C0 AA F0 A7 ... Как реализовать...

Замена hex значений
Читаю файл вот так: procedure ReadFileAsHex(const AFileName: string; ADestination: TStrings); var fs: TFileStream; buff: Byte; ...

37
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
02.03.2015, 11:28  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Enno Посмотреть сообщение
Считать этот текст и записать его чуть дальше.
С этим разобрался, спасибо.
Цитата Сообщение от Enno Посмотреть сообщение
результат преобразования
Да, если то что я написал выше так называется...
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
02.03.2015, 15:50
Цитата Сообщение от BiNaRs Посмотреть сообщение
Да, если то что я написал выше так называется...
Ты не можешь преобразовать побайтово строку в число?
0
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 08:22  [ТС]
Я же говорю - я новичок и многого еще не знаю.
Легко освоил создание окна, кнопки, менюшки даже произвольной формы, диалоги и еще много чего подобного...
А сейчас вот решил изучить работу с такими вот файлами.
Если не трудно, покажите пожалуйста пример кода как из idc_edit получить то, что я туда вписываю (12345678) и записать в файл так:
Code
1
00010a30 - 21 43 65 87 ..... и так далее
Гораздо проще чему-то научиться на примерах с объяснениями, чем читая много текста без картинок в книгах...
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
03.03.2015, 10:03
Лучше будет самому разобраться и увидеть. Вот у тебя есть число. Символы которые описывают младший байт превращаешь с значение этого байта.
0x12345678 <- покажи где тут символы описывающие младший байт.
1
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 10:08  [ТС]
Цитата Сообщение от Enno Посмотреть сообщение
0x12345678 <- покажи где тут символы описывающие младший байт.
12 - это старший, 78 - младший
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
03.03.2015, 10:09
Цитата Сообщение от BiNaRs Посмотреть сообщение
чем читая много текста без картинок в книгах
Лучший способ ничему не выучиться.

Пример перестановки бит у вас перед глазами, но поскольку думать вы ленитесь, то и пользы из него извлечь не состоянии. То же и с IDC_EDIT - полный MSDN примеров, тонны кода на профильных сайтах, а вы - с протянутой рукой - здесь.

Единственный способ научиться чему-то - пытаться найти ответ самостоятельно, не подглядывая в конец задачника.
1
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 10:14  [ТС]
Цитата Сообщение от BiNaRs Посмотреть сообщение
12 - это старший, 78 - младший
Не то написал:
2, 4, 6, 8 - младшие биты.
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
03.03.2015, 10:51
Лолка, а чё это бит 8 равен? Сначала было правильно.
Окей, теперь тебе строку "78" надо превратить в число, шеснадцатиричная запись которого равна 0x78.
1
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 11:44  [ТС]
Цитата Сообщение от Enno Посмотреть сообщение
строку "78" надо превратить в число, шеснадцатиричная запись которого равна 0x78
Это я как понял делает стандартная функция strtol
Code
1
2
TCHAR str[3] = "78";
int x = strtol(str, NULL, 16);
0
03.03.2015, 11:47

Не по теме:

Цитата Сообщение от gazlan Посмотреть сообщение
Потому, что размер DWORD - 8 bytes.
Опечатка. В DWORD-е 4 байта.

0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
03.03.2015, 14:09
Цитата Сообщение от Убежденный Посмотреть сообщение
Опечатка. В DWORD-е 4 байта

Не по теме:

Разумеется. Спасибо за поправку.

0
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 14:49  [ТС]
Либо еще можно так:
Code
1
2
TCHAR str[3] = "78";
int x = MakeSigByte((char *)&sstr);
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
03.03.2015, 15:45
Теперь записывай этот младший байт на соответствующее младшее место в файле. С остальными также.
0
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 15:54  [ТС]
Так записывается так же 78, а надо чтобы записывался наооборот, тоесть 87...
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
03.03.2015, 16:11
Лучший ответ Сообщение было отмечено BiNaRs как решение

Решение

Цитата Сообщение от BiNaRs Посмотреть сообщение
надо чтобы записывался наооборот
Поменяй местами четвёрки битов в байте.
x = (x>>4)+(x<<4);
Скажи, зачем тебе такие преобразования?
1
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 16:27  [ТС]
Запись imei в бэкап. Но он там записан попарно зеркально... Вот чтобы каждый бэкап не фиксить hex-редактором я написал простенькую програмульку - вписал imei, mac-адрес и bluethooth адрес, нажал кнопочку и бэкап готов
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
03.03.2015, 16:59
Цитата Сообщение от BiNaRs Посмотреть сообщение
Запись imei в бэкап
Где тебе imei такой "инвертированный" понадобится?
0
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22
03.03.2015, 18:13  [ТС]
Это он в nv параметрах почему-то такой... Вот и приходится "извращаться"...

Добавлено через 2 минуты
Это он в nv параметрах почему-то такой... Вот и приходится "извращаться"...
x = (x>>4)+(x<<4)
вот я об этом и спрашивал, все получилось, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2015, 18:13
Помогаю со студенческими работами здесь

Hex редактирование - замена строк в файле
Есть файл (вернее 3d модель) в котором нужно сменить имя текстуры, при помощи Free Hex Editor Neo это можно спокойной делать: грузите...

Поиск и замена hex значения в RAM
Подскажите, как написать скрипт для WinHex, чтобы открыть определенный процесс в оперативной памяти, найти определенное hex значение и...

Замена символов в 16-ричном HEX коде программы
Всем привет! Ребята Хелп подскажите пожалуйста как заменить какой командой вот эти три позиции с того что там на скрине в красных...

Если HEX одного файла заменить на HEX другого, то изменится ли файл и будет ли работоспособным?
Привет, если два файла a.exe(калькулятор) и b.exe(выводит строку &quot;Hello World&quot;) Если открыть файл b.exe в HEX-редакторе и подменить его...

ASCII to HEX, HEX to Binary/Assembly 8086
Люди добрые, есть проблема, надо написать программу которая получает с клавиатуры какие-нибудь символы, например: Ab10 и печатает на экране...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru