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

Инвертировать байты в файле

13.09.2017, 22:09. Показов 5289. Ответов 4

Студворк — интернет-сервис помощи студентам
В общем задачка. Есть файл, нужно открыть нужный байт в нём, и инвертировать значения битов в этом байте. То есть, допустим на позиции 4B в файле есть байт 3A (0011 1010) и из него нужно сделать C5 (1100 0101). В программу требуется ввести порядковый номер байта (не важно в DEC или в HEX), запросить подтверждение на изменение, инвертировать биты в нём, и записать всё это обратно в файл. Язык вроде знаю на троечку, но с файлами не работал. Спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2017, 22:09
Ответы с готовыми решениями:

Инвертировать те байты, в старших битах которых имеются 1
Дан массив из 10 беззнаковых байтов. Инвентировать те байты, в старших битах которых имеются 1.Найти сумму элементов полученного массива.

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

Изменить байты в файле
Привет всем, юзал гугл, яндекс не могу найти примера как изменить конкретный байт в файле. Подкиньте пример, спасибо. Добавлено через...

4
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
14.09.2017, 02:04
Лучший ответ Сообщение было отмечено Alex_LogON как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    ofstream fout("file.dat", ios::binary);
    unsigned char byte = 0;
    unsigned int pos = 0x4B;
    for (size_t i = 0; i < 100; ++i, ++byte)
    {
        if (i != pos)
            fout.write((const char*)&byte, sizeof(byte));
        else
        {
            unsigned char temp = 0x3A;
            fout.write((const char*)&temp, sizeof(temp));
        }
    }
    fout.close();
    
    fstream f("file.dat", ios::in | ios::out | ios::binary);
    if (!f)
    {
        cout << "Error opening file!" << endl;
        system("pause");
        return 0;
    }
    
    f.seekg(pos);
    f.read((char*)&byte, sizeof(byte));
    cout << hex << (int)byte << endl;
    
    byte = (~byte);
    f.seekp(pos);
    f.write((const char*)&byte, sizeof(byte));
    f.flush();
    
    f.seekg(pos);
    f.read((char*)&byte, sizeof(byte));
    cout << hex << (int)byte << endl;
    f.close();
0
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 7
14.09.2017, 16:40  [ТС]
nd2, В общем, привёл код к такому виду:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <QCoreApplication>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream fout("123.dat", ios::binary);
unsigned char byte = 0;
unsigned int pos = 0x1;
for (size_t i = 0; i < 100; ++i, ++byte)
{
    if (i != pos)
        fout.write((const char*)&byte, sizeof(byte));
    else
    {
        unsigned char temp = 0x3A;
        fout.write((const char*)&temp, sizeof(temp));
    }
}
fout.close();
 
fstream f("123.dat", ios::in | ios::out | ios::binary);
if (!f)
{
    cout << "Error opening file!" << endl;
    system("pause");
    return 0;
}
 
f.seekg(pos);
f.read((char*)&byte, sizeof(byte));
cout << hex << (int)byte << endl;
 
byte = (~byte);
f.seekp(pos);
f.write((const char*)&byte, sizeof(byte));
f.flush();
 
f.seekg(pos);
f.read((char*)&byte, sizeof(byte));
cout << hex << (int)byte << endl;
f.close();
}
По итогу, просто пишет в консоль 3a c5 и всё, в независимости от того есть ли файл, или его нет. Подскажете что не так?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
14.09.2017, 18:07
Цитата Сообщение от Alex_LogON Посмотреть сообщение
Подскажете что не так?
А что не так? Указанный байт в файле переписывает?
0
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 7
14.09.2017, 18:38  [ТС]
Да уже всё, спасибо. Неправильно указывал путь к файлу. Теперь всё работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2017, 18:38
Помогаю со студенческими работами здесь

Узнать, какие байты не встречаются в файле
как пропарсить файл и узнать, какие байты в нем не встречаются, и одновременно записывать в массив? заранее благодарен

Заголовочные байты в файле изображения и свойство RawFormat
Можно ли каким-то образом определить, каким форматом изображения представлен данный файл, если первые байты в заголовочной части файла...

Функция, меняющая четные и нечетные байты в файле местами
Ребят,кто может ,срочно,написать программу.Написать функцию,меняющую четные и нечетные байты в файле местами.:wall::cry:ПОжалуйста...

Найти в файле байт или байты с максимальным количеством повторов
Здравствуйте!Такое задание Самые частые байты Ввести с консоли имя файла. Найти байт или байты с максимальным количеством...

Создание dll которая будет при инжекте менять байты в exe-файле
Нужна помощь с созданием dll которая будет при инжекти менять байты в exe-файле Например: приложение PointBlank.exe адрес 0x787475 ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru