|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||||||
Функция поиска offset по hex значению в бинарном файле03.03.2023, 20:41. Показов 7954. Ответов 77
Всем доброго времени суток.
По названию темы понятно, наверное, что надо сделать. Начал своё дело с написания функции, которая конвертирует из hex в byte
Но для Windows и Linux нет одного метода. Для Linux можно использовать mmap, а вот для Windows что? Хотелось бы использовать один и тот же быстрый инструмент. Так как работа связана с большими файлами и поиск надо будет делать, как с начала так и с конца файла, да ещё и на слабых машинах, где ОЗУ < размера обрабатываемого файла, то mmap на Linux вряд ли поможет.
0
|
||||||
| 03.03.2023, 20:41 | |
|
Ответы с готовыми решениями:
77
Функции поиска в бинарном файле по номеру записи |
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 04.03.2023, 14:33 [ТС] | |
|
DrOffset, хде я писал про текст?!
Добавлено через 50 секунд Verevkin, выходной - дело святое) удачно отдохнуть, возвращайся в понедельник
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 04.03.2023, 14:34 | |||
|
но вообще вот: hex - текст.
0
|
|||
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 04.03.2023, 14:37 [ТС] | |
|
DrOffset, ну это как бы естественно и логично. Функции передаются hex значения в текстовом формате. И вы когда с Клавы вводите они тоже текстовые будут....
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 04.03.2023, 14:40 | ||||
|
И никакого отношения к тому, что вы там можете ввести с клавиатуры это не имеет.
0
|
||||
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 04.03.2023, 14:46 [ТС] | |
|
DrOffset, Потому что консоль не текст не воспринимает.
Всё естественно и логично. На функцию подаются 2 параметра, текстовые: 1 - путь к файлу (не текстовому), 2 - hex значение для поиска. Возвращает offset первого совпадения. Поэтому в моих словах и телодвижениях нет ничего противоречащего друг другу.
0
|
|
| 04.03.2023, 14:51 | |
|
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 06.03.2023, 21:51 [ТС] | |
|
DrOffset, ну это хорошо. Есть советы ещё в этом направлении?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 06.03.2023, 22:09 | |
|
blackeangel, в посте #19.
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||||||
| 08.03.2023, 18:47 [ТС] | ||||||
|
Не по теме: zayats80888, TheCalligrapher, а вы что остались в стороне? :D Добавлено через 2 часа 27 минут DrOffset, перечитал несколько раз этот пост и не понял, а как делать то поиск?
Добавлено через 56 минут или что или как? может не надо конвертить из hex в byte? тогда как читать файл в hex? или как? как вообще это сделать?!
0
|
||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||||||
| 09.03.2023, 17:05 | ||||||||||||
read из <iostream>). Задача была проюллюстрировать описанный выше алгоритм.Написано под Linux (мне так удобнее), поэтому, и для экономии времени, я использую готовую GNU-функцию memmem. Для Windows нужен будет ее аналог. Ниже привожу каноничную реализацию на C (думаю, можно переписать ее с использованием SSE, если скорость поиска будет неудовлетворительной). Кликните здесь для просмотра всего текста
Также отмечу, что я не делал тут пользовательский ввод в hex, и перевод пользовательского ввода в байты. У вас это сделано, прикрутите сами. Вот основной код:
0
|
||||||||||||
| 31.03.2023, 13:22 | ||
|
Не по теме:
Мне надо как-то себя защитить от последующих претензий в стиле "Я тут вставил твой код в программу, которую я пишу для управления ядерным реактором, и у меня все взорвалось! Ты виноват в этом! Исправляй!". Это немного утрировано, но мне довольно часто приходилось подобное выслушивать. Это не отменяет того факта, что с вашей стороны было бы вежливо написать хотя бы о том, что именно вас не устраивает. Это было бы уважением к тому времени, что я потратил на ответ вам. На форумах не принято сбегать из темы без какого-то резюме, форум - это не QA support.
0
|
||
| 31.03.2023, 17:25 [ТС] | ||||
|
Не по теме:
0
|
||||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,309
|
||
| 31.03.2023, 17:53 | ||
|
А есть другие варианты? Крикнуть АУ и ждать отклика?
0
|
||
| 31.03.2023, 18:00 | ||
|
Не по теме:
Алгоритмы поиска в строке Поиск подстроки в строке Это так, для общего развития.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||||
| 31.03.2023, 18:57 | |||||||||
Сообщение было отмечено blackeangel как решение
РешениеДобавлено через 2 минуты Не по теме:
Добавлено через 3 минуты Кроме того, заранее, если бы развитие дискуссии было в нужном ключе, у меня заготовлен был улучшенный с точки зрения производительности пример этой функции. Вот он: Кликните здесь для просмотра всего текста
1
|
|||||||||
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|||
| 31.03.2023, 19:23 [ТС] | |||
|
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 31.03.2023, 19:38 | |
|
blackeangel, для проверки нужно просто добавить функцию
memmem из кода под спойлером, чтобы остальной код ее увидел. И укажите какой-то реальный файл (для поиска), на котором будете проверять.Если будете запускать в MSVC, то надо указать #define _CRT_SECURE_NO_WARNINGS в самом начале файла. Это единственное изменение, которое нужно сделать. В MinGW работает как есть.
1
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||
| 31.03.2023, 21:25 [ТС] | ||
|
DrOffset, у меня CLion, поэтому добавил функцию memmem из кода под спойлером. Спасибо
![]() Добавлено через 1 час 25 минут
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 31.03.2023, 23:40 | |
|
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 31.03.2023, 23:48 [ТС] | |
|
DrOffset, ваша принимает char* array, а "моя" возвращает vector<uint8_t>... Нужно либо конвертировать как то, либо переписывать hex2byte
0
|
|
| 31.03.2023, 23:48 | |
|
Функция поиска в бинарном дереве
Необычная функция в бинарном дереве поиска Методика поиска аналогичного кода бинарном файле нового релиза Функция, которая меняет строку в бинарном файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2.
Задача: контроль уникальности строк в. . .
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока
Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
|