|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||||||
Функция поиска offset по hex значению в бинарном файле03.03.2023, 20:41. Показов 8138. Ответов 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
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|||
| 04.03.2023, 14:34 | |||
|
но вообще вот: hex - текст.
0
|
|||
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 04.03.2023, 14:37 [ТС] | |
|
DrOffset, ну это как бы естественно и логично. Функции передаются hex значения в текстовом формате. И вы когда с Клавы вводите они тоже текстовые будут....
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
||||
| 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
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|
| 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
|
||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
||||||||||||
| 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,341
|
||
| 31.03.2023, 17:53 | ||
|
А есть другие варианты? Крикнуть АУ и ждать отклика?
0
|
||
| 31.03.2023, 18:00 | ||
|
Не по теме:
Алгоритмы поиска в строке Поиск подстроки в строке Это так, для общего развития.
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|||||||||
| 31.03.2023, 18:57 | |||||||||
Сообщение было отмечено blackeangel как решение
РешениеДобавлено через 2 минуты Не по теме:
Добавлено через 3 минуты Кроме того, заранее, если бы развитие дискуссии было в нужном ключе, у меня заготовлен был улучшенный с точки зрения производительности пример этой функции. Вот он: Кликните здесь для просмотра всего текста
1
|
|||||||||
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|||
| 31.03.2023, 19:23 [ТС] | |||
|
0
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|
| 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
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|
| 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 | |
|
Функция поиска в бинарном дереве
Необычная функция в бинарном дереве поиска Методика поиска аналогичного кода бинарном файле нового релиза Функция, которая меняет строку в бинарном файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|