Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47

Поиск числа в файле, открытым в бинарном режиме

21.05.2014, 01:56. Показов 3358. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые дамы и господа, возник вопрос по поводу поиска числа в бинарном файле.
Допустим имеется код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <conio.h>
using namespace std;
void main(){
    int t = 247;
    t = t - 246;
    cout << t << endl;
    _getch();
}
Данный код скомпилирован и выполняется, из него получается .exe файл.
Данный .exe файл после, я открываю с помощью hiew32(hex - editor) и могу с лёгкостью найти число 247 для его изменения. После .exe файл будет выводить иной результат(в зависимости от изменения).
Возник вопрос как данный поиск данного числа осуществить в коде на с++.
Погуглив и почитав литературу, получилось вот такое вот решения:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ifstream file_op(m_FileIn, ios::binary);
    if (!file_op) return 0;
     int buf[1024];
     int a = 247;     // то  что мы ищем
     int z = 0;     // счётчик поиска
     do {
         file_op.read((char *)buf, sizeof buf);
         for (int i = 0; i < 256; i++)
         {
             if (buf[i] == a) 
                 z++;   // счётчик(после полного прохода по файлу должен быть равен 1.)
         }
     
     } while (!file_op.eof());
     file_op.close();
    return false;
Но к сожалению данный код не выполняется как задумано.
Буду благодарен за исправления и наставления. И решения проблемы неработоспособности данного кода.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2014, 01:56
Ответы с готовыми решениями:

Поиск в бинарном файле
Привет! Мне нужно в бинарный файл записать: ФИО, Номер телефона и дату рождения(массив из трех чисел) и сделать поиск:Вывести всех людей...

Поиск в бинарном файле
Здравствуйте. В бинарном файле записаны даные о пользователях (логин, пароль, имя). Скажите пожалуйста, можно ли осуществить поиск в...

Поиск в бинарном файле
мне надо в бинарном файле найти одну 8-ми байтную строку, я сделал вот такой поиск, но он почему то не работает :( std::fstream stream; ...

15
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 02:17
Ошибка в том, что в файле не одни int записаны, а вы, судя по коду, считаете, что одни.

Добавлено через 1 минуту
Нужно искать сочетание байт (которое видите в hex-редакторе, как число 247).

Добавлено через 4 минуты
Но и это не гарантирует, что найдёте то, что нужно.
0
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 02:18  [ТС]
Хм, возможно вы полностью правы, мне просто казалось что всё идёт по 4 байта, то есть если перебирая по шагам по 4-ре байта весь файл в итоге я найду нужное число.
Видимо я не правильно понял..
Как же тогда правильнее решить поставленную задачу, или если вам не сложно посоветуйте где можно углубить свои знания в этой теме.
Ну и если можете привести пример кода, будет вообще божественно.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 03:15
Цитата Сообщение от rusianvodka Посмотреть сообщение
Данный .exe файл после, я открываю с помощью hiew32(hex - editor) и могу с лёгкостью найти число 247 для его изменения.
Поделитесь секретом: как вы в .exe, с помощью hex-редактора, находите int, равный 247?
0
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 14:52  [ТС]
Очень просто, с помощью калькулятора я перевожу число в hex. Получается что 247 это f7 добавляю после пару нулей и нахожу данное число.
После меняю данное число в exe файле для проверки и запускаю exe. Теперь exe работает как было поменяно(задуманно).

Добавлено через 22 минуты
плюс исходя из этой картинки, я посчитал что всё выравнивается на 4 байта.
или я не прав?
Миниатюры
Поиск числа в файле, открытым в бинарном режиме  
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 14:55
А если release собрать, пробовали искать?
0
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 14:59  [ТС]
нет не пробовал, да и пока не задумывался об этом, сейчас происходит решение проблем и задач которые я задал выше)
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 15:12
А что тут задумываться? Соберите в release и попробуйте найти своё число, а потом уже можно и задуматься.
0
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 15:47  [ТС]
Собрал как вы и сказали в release, также с лёгкостью нашлось число, и изменилось.
После запуска exe файла вывелось задуманное число с последствиями изменения числа в exe
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 15:59
Компилируете в чём?
0
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 16:11  [ТС]
VS 2013
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 16:53
В этом exe находите?
Вложения
Тип файла: rar MY1.rar (5.2 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 17:46  [ТС]
проблема решена, всё было связанно на том что у меня 64 битные инты .
Переделав с помощью одного человека некоторые строки и дописав int32_t.
всё заработало.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 20:32
Цитата Сообщение от rusianvodka Посмотреть сообщение
что у меня 64 битные инты .
64-битные инты где?
А на вопрос ответить?
Цитата Сообщение от alsav22 Посмотреть сообщение
В этом exe находите?
0
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
21.05.2014, 21:08  [ТС]
я не понимаю как связан поиск в вашем ехе файле с моим вопросом в шапке.
по поводу 64, то у меня 64 разрядная система и тут инты 8 байтные.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2014, 21:20
Цитата Сообщение от rusianvodka Посмотреть сообщение
я не понимаю как связан поиск в вашем ехе файле с моим вопросом в шапке.
А что тут понимать? Это мой вопрос к вам.
Цитата Сообщение от rusianvodka Посмотреть сообщение
то у меня 64 разрядная система и тут инты 8 байтные.
Разрядность int, в exe, зависит не от разрядности системы, а от разрядности проекта. Разрядность проекта какая?

Добавлено через 1 минуту
А вот такой int: 17863, сможте найти?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2014, 21:20
Помогаю со студенческими работами здесь

Поиск в бинарном файле
в бинарном файле записаны цены вводится цена программа должна выдать все услуги равные цене не пойму почему он выдаёт cout &lt;&lt;...

Бинарный поиск в бинарном файле
Здравствуйте, помогите решить проблему. Написал программу для нахождения числа бинарным поиском и перебором в бинарном файле. Программа,...

Поиск и замена в бинарном файле
Здравствуйте. Есть у нас в конторе чат, который хранит свои настройки в бинарном файле. По умолчанию он берет имя в чате равным имени...

Поиск по структуре в бинарном файле
Всем привет! Хотел бы обратиться к более опытным людям.Есть задача &quot;Запись имеет вид: название инструмента, число, месяц и год...

Поиск текста в бинарном файле
Всем доброго времени суток! Решил написать для себя небольшой поисковик текста в бинарном файле. И тут же упёрся в ошибки и своё не...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru