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

Из заданного двоичного файла создать новый двоичный файл, у которого байты переставлены в обратном порядке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск подстроки http://www.cyberforum.ru/cpp-beginners/thread1201122.html
Привет всем. Я пишу программу для поиска подстроки. Если подстрока есть в строке, вывести YES. Иначе - NO. Вот код(еще не дописанный) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int search(char a, char b){ int i, j, n, m; n = strlen(a);
C++ Переставить байты исходного файла в обратном порядке 7. По заданному двоичному файлу с произвольным содержанием создать новый двоичный файл, у которого байты переставлены в обратном порядке. Вывести содержимое исходного и итогового файлов на экран. http://www.cyberforum.ru/cpp-beginners/thread1201120.html
C++ Изменение значения указателя
Здравствуйте В коде приведена функция, которая при помощи указателей считывает размер массива и его элементы из файла блокнота. Почему значение, хранящееся в массиве после выполнения цикла самопроизвольно меняется? функция мэйн #include <iostream> #include <stdlib.h> #include <windows.h>
C++ Рекурсивная функция, выводящая на экран все целые числа от N до K, N<K
рекурсивная функция, выводящая на экран все целые числа от N до K, N<K
C++ Написать рекурсивную функцию, выводящую на экран все целые числа в определенном интервале http://www.cyberforum.ru/cpp-beginners/thread1201100.html
рекурсивная функция, выводящая на экран все целые числа от N до K, N<K
C++ Можно ли обратиться к 3 элементу массива ? Если у нас есть int *x, y = { 1,2,3,4,5 }, можно ли обратиться к 3 элементу массива вот так? x=y; *(x+2) Думаю, что нет, так как не взят адрес x=&y А что вобще произойдет при таком условии? x=y подробнее

Показать сообщение отдельно
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
08.06.2014, 13:16     Из заданного двоичного файла создать новый двоичный файл, у которого байты переставлены в обратном порядке
Цитата Сообщение от zer0mail Посмотреть сообщение
Я просто читал с конца по мегабайту, копировал в обратном порядке в другой буфер и записывал. Получилось ~50 мб/сек
Интересно, сколько гиг можно запихать в вектор и как долго будет копироваться?

Добавлено через 11 часов 32 минуты
Если копировать 200 Мб (такой файл целиком влезает в память), то скорость ~0.25Мб/сек
1 Гиг тоже копируется, но немного медленней, а 1.9Гиг не влезает в память (ОС WinXP 32)...

Вывод: не надо искать сложных медленных решений там, где работают простые и быстрые
1*666*713*278 обработало за
Finished reading file (18517 ms)
Finished reversing (1170 ms)
Finished saving (10935 ms)
~ 54429622 B/s
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
#include <iostream>
#include <fstream>
#include <vector>
#include <Windows.h>
 
int main()
  {
  unsigned long long ticks1 = GetTickCount64();
  std::ifstream source("C:/Users/Nekto/Downloads/VIDEO/Supernatural.S09E20.Bloodlines.1080p.WEB-DL.DD5.1.H.264-ECI [PublicHD]/Supernatural.S09E20.Bloodlines.1080p.WEB-DL.DD5.1.H.264-ECI.mkv", std::ios::binary);
 
  source.seekg(0, source.end);
  std::vector<char> buffer(static_cast<size_t>(source.tellg()));
  source.seekg(0, source.beg);
  source.read(&buffer[0], buffer.size());
  unsigned long long ticks2 = GetTickCount64();
  std::cout << "Finished reading file (" << ticks2 - ticks1 << " ms)" << std::endl;
  source.close();
 
  ticks1 = GetTickCount64();
  std::reverse(buffer.begin(), buffer.end());
  ticks2 = GetTickCount64();
  std::cout << "Finished reversing (" << ticks2 - ticks1 << " ms)" << std::endl;
 
  ticks1 = GetTickCount64();
  std::ofstream destination("destination.txt", std::ios::binary);
  destination.write(&buffer[0], buffer.size());
  ticks2 = GetTickCount64();
  std::cout << "Finished saving (" << ticks2 - ticks1 << " ms)" << std::endl;
  return 0;
  }
 
Текущее время: 19:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru