Форум программистов, компьютерный форум CyberForum.ru

Чтение бинарных файлов - C++

Восстановить пароль Регистрация
 
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
24.04.2012, 10:44     Чтение бинарных файлов #1
Как прочитать бинарный файл начиная с пятого байта до конца?

и как потом это прочитанное записать в другой файл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 10:44     Чтение бинарных файлов
Посмотрите здесь:

чтение бинарных файлов C++
C++ Чтение бинарных файлов
Запись бинарных файлов C++
Объединение двух бинарных файлов C++
C++ Счёт последовательностей бинарных файлов
Записать данные двух бинарных файлов в один C++
Запись и чтение бинарных файлов. Программа крашится при закрытии консольного окна C++
C++ Сравнение бинарных файлов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.04.2012, 11:09     Чтение бинарных файлов #2
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
#include <iostream>
#include <fstream>
#include <vector>
 
int main()
{
   const std::streampos offset = 5;
   std::ifstream ifs("test_file", std::ios::binary);
   if (!ifs)
   {
      std::cerr << "No file" << std::endl;
      return 1;
   }
   ifs.seekg(0, std::ios::end);
   std::streampos length = ifs.tellg();
   ifs.seekg(0, std::ios::beg);
   if (length > offset)
   {
      ifs.seekg(offset);
      std::vector<char> bin_content(length - offset);
      ifs.read((char*)&bin_content[0], bin_content.size());
      std::ofstream ofs("res_file", std::ios::binary);
      ofs.write((char*)&bin_content[0], bin_content.size());
      ofs.close();
   }
   ifs.close();
}
Bash
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
forever@pterois:~/My_pro1/cpp_pro$ hd test_file 
00000000  7f 45 4c 46 01 01 01 03  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  e2 94 94 e2 95 9e 04 08  |................|
00000020  34 00 00 00 3c 04 04 00  00 00 00 00 34 00 20 00  |4...<.......4. .|
00000030  09 00 28 00 20 00 1d 00  06 00 00 00 34 00 00 00  |..(. .......4...|
00000040  34 d0 90 04 08 34 d0 90  04 08 20 01 00 00 20 01  |4....4.... ... .|
00000050  00 00 05 00 00 00 04 00  00 00 03 00 00 00 54 01  |..............T.|
00000060  00 00 54 d0 91 04 08 54  d0 91 04 08 13 00 00 00  |..T....T........|
00000070  13 00 00 00 04 00 00 00  01 00 00 00 01 00 00 00  |................|
00000080  00 00 00 00 00 d0 90 04  08 00 d0 90 04 08 18 c2  |................|
00000090  a4 03 00 18 c2 a4 03 00  05 00 00 00 00 10 00 00  |................|
000000a0  01 00 00 00 e2 95 aa e2  96 a0 03 00 e2 95 aa d0  |................|
000000b0  9e 08 08 e2 95 aa d0 9e  08 08 20 04 00 00 e2 95  |.......... .....|
000000c0  95 06 00 00 06 00 00 00  00 10 00 00 02 00 00 00  |................|
000000d0  d0 81 e2 96 a0 03 00 d0  81 d0 9e 08 08 d0 81 d0  |................|
000000e0  9e 08 08 00 01 00 00 00  01 00 00 06 00 00 00 04  |................|
000000f0  00 00 00 04 00 00 00 68  01 00 00 68 d0 91 04 08  |.......h...h....|
00000100  68 d0 91 04 08 44 00 00  00 44 00 00 00 04 00 00  |h....D...D......|
00000110  00 04 00 00 00 50 d1 85  74 64 6c e2 94 94 02 00  |.....P..tdl.....|
00000120  6c 40 07 08 6c 40 07 08  4c 37 00 00 4c 37 00 00  |l@..l@..L7..L7..|
00000130  04 00 00 00 04 00 00 00  51 d1 85 74 64 00 00 00  |........Q..td...|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000150  00 06 00 00 00 04 00 00  00 52 d1 85 74 64 e2 95  |.........R..td..|
00000160  aa e2 96 a0 03 00 e2 95  aa d0 9e 08 08 e2 95 aa  |................|
00000170  d0 9e 08 08 28 01 00 00  28 01 00 00 04 00 00 00  |....(...(.......|
00000180  01 00 00 00 2f 6c 69 62  2f 6c 64 2d 6c 69 6e 75  |..../lib/ld-linu|
00000190  78 2e 73 6f 2e 32 0a                              |x.so.2.|
00000197
forever@pterois:~/My_pro1/cpp_pro$ ./new 
forever@pterois:~/My_pro1/cpp_pro$ hd res_file 
00000000  01 01 03 00 00 00 00 00  00 00 00 02 00 03 00 01  |................|
00000010  00 00 00 e2 94 94 e2 95  9e 04 08 34 00 00 00 3c  |...........4...<|
00000020  04 04 00 00 00 00 00 34  00 20 00 09 00 28 00 20  |.......4. ...(. |
00000030  00 1d 00 06 00 00 00 34  00 00 00 34 d0 90 04 08  |.......4...4....|
00000040  34 d0 90 04 08 20 01 00  00 20 01 00 00 05 00 00  |4.... ... ......|
00000050  00 04 00 00 00 03 00 00  00 54 01 00 00 54 d0 91  |.........T...T..|
00000060  04 08 54 d0 91 04 08 13  00 00 00 13 00 00 00 04  |..T.............|
00000070  00 00 00 01 00 00 00 01  00 00 00 00 00 00 00 00  |................|
00000080  d0 90 04 08 00 d0 90 04  08 18 c2 a4 03 00 18 c2  |................|
00000090  a4 03 00 05 00 00 00 00  10 00 00 01 00 00 00 e2  |................|
000000a0  95 aa e2 96 a0 03 00 e2  95 aa d0 9e 08 08 e2 95  |................|
000000b0  aa d0 9e 08 08 20 04 00  00 e2 95 95 06 00 00 06  |..... ..........|
000000c0  00 00 00 00 10 00 00 02  00 00 00 d0 81 e2 96 a0  |................|
000000d0  03 00 d0 81 d0 9e 08 08  d0 81 d0 9e 08 08 00 01  |................|
000000e0  00 00 00 01 00 00 06 00  00 00 04 00 00 00 04 00  |................|
000000f0  00 00 68 01 00 00 68 d0  91 04 08 68 d0 91 04 08  |..h...h....h....|
00000100  44 00 00 00 44 00 00 00  04 00 00 00 04 00 00 00  |D...D...........|
00000110  50 d1 85 74 64 6c e2 94  94 02 00 6c 40 07 08 6c  |P..tdl.....l@..l|
00000120  40 07 08 4c 37 00 00 4c  37 00 00 04 00 00 00 04  |@..L7..L7.......|
00000130  00 00 00 51 d1 85 74 64  00 00 00 00 00 00 00 00  |...Q..td........|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 06 00 00 00  |................|
00000150  04 00 00 00 52 d1 85 74  64 e2 95 aa e2 96 a0 03  |....R..td.......|
00000160  00 e2 95 aa d0 9e 08 08  e2 95 aa d0 9e 08 08 28  |...............(|
00000170  01 00 00 28 01 00 00 04  00 00 00 01 00 00 00 2f  |...(.........../|
00000180  6c 69 62 2f 6c 64 2d 6c  69 6e 75 78 2e 73 6f 2e  |lib/ld-linux.so.|
00000190  32 0a                                             |2.|
00000192
Добавлено через 5 минут
Или так если считать байты с 1.

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
#include <iostream>
#include <fstream>
#include <vector>
 
int main()
{
   const std::streampos offset = 5;
   std::ifstream ifs("test_file", std::ios::binary);
   if (!ifs)
   {
      std::cerr << "No file" << std::endl;
      return 1;
   }
   ifs.seekg(0, std::ios::end);
   std::streampos length = ifs.tellg();
   ifs.seekg(0, std::ios::beg);
   if (length > offset)
   {
      ifs.seekg(offset - std::streampos(1));
      std::vector<char> bin_content(length - offset + 1);
      ifs.read((char*)&bin_content[0], bin_content.size());
      std::ofstream ofs("res_file", std::ios::binary);
      ofs.write((char*)&bin_content[0], bin_content.size());
      ofs.close();
   }
   ifs.close();
}
Bash
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
forever@pterois:~/My_pro1/cpp_pro$ hd res_file 
00000000  01 01 01 03 00 00 00 00  00 00 00 00 02 00 03 00  |................|
00000010  01 00 00 00 e2 94 94 e2  95 9e 04 08 34 00 00 00  |............4...|
00000020  3c 04 04 00 00 00 00 00  34 00 20 00 09 00 28 00  |<.......4. ...(.|
00000030  20 00 1d 00 06 00 00 00  34 00 00 00 34 d0 90 04  | .......4...4...|
00000040  08 34 d0 90 04 08 20 01  00 00 20 01 00 00 05 00  |.4.... ... .....|
00000050  00 00 04 00 00 00 03 00  00 00 54 01 00 00 54 d0  |..........T...T.|
00000060  91 04 08 54 d0 91 04 08  13 00 00 00 13 00 00 00  |...T............|
00000070  04 00 00 00 01 00 00 00  01 00 00 00 00 00 00 00  |................|
00000080  00 d0 90 04 08 00 d0 90  04 08 18 c2 a4 03 00 18  |................|
00000090  c2 a4 03 00 05 00 00 00  00 10 00 00 01 00 00 00  |................|
000000a0  e2 95 aa e2 96 a0 03 00  e2 95 aa d0 9e 08 08 e2  |................|
000000b0  95 aa d0 9e 08 08 20 04  00 00 e2 95 95 06 00 00  |...... .........|
000000c0  06 00 00 00 00 10 00 00  02 00 00 00 d0 81 e2 96  |................|
000000d0  a0 03 00 d0 81 d0 9e 08  08 d0 81 d0 9e 08 08 00  |................|
000000e0  01 00 00 00 01 00 00 06  00 00 00 04 00 00 00 04  |................|
000000f0  00 00 00 68 01 00 00 68  d0 91 04 08 68 d0 91 04  |...h...h....h...|
00000100  08 44 00 00 00 44 00 00  00 04 00 00 00 04 00 00  |.D...D..........|
00000110  00 50 d1 85 74 64 6c e2  94 94 02 00 6c 40 07 08  |.P..tdl.....l@..|
00000120  6c 40 07 08 4c 37 00 00  4c 37 00 00 04 00 00 00  |l@..L7..L7......|
00000130  04 00 00 00 51 d1 85 74  64 00 00 00 00 00 00 00  |....Q..td.......|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 06 00 00  |................|
00000150  00 04 00 00 00 52 d1 85  74 64 e2 95 aa e2 96 a0  |.....R..td......|
00000160  03 00 e2 95 aa d0 9e 08  08 e2 95 aa d0 9e 08 08  |................|
00000170  28 01 00 00 28 01 00 00  04 00 00 00 01 00 00 00  |(...(...........|
00000180  2f 6c 69 62 2f 6c 64 2d  6c 69 6e 75 78 2e 73 6f  |/lib/ld-linux.so|
00000190  2e 32 0a                                          |.2.|
00000193
Yandex
Объявления
24.04.2012, 11:09     Чтение бинарных файлов
Ответ Создать тему
Опции темы

Текущее время: 20:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru