0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 22

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

25.02.2015, 09:00. Показов 4586. Ответов 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
3178 / 1937 / 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
3178 / 1937 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru