![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 25.11.2011
Сообщений: 12
|
![]()
Задача: открыть файл в двоичном виде и записать в массив, для того что бы отредактировать. Я до этого никогда не встречался с потоками. Удобно ли будет хранить файл размером 2 мегабайта в массиве? Объявлять надо long long?
Код: Код:
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 30.08.2011
Сообщений: 20
|
![]()
зачем файл переписывать в массив а потом редактировать, если к бинарному файлу можно обращаться произвольно на прямую?
|
![]() |
![]() |
![]() |
#3 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
Только тут пожалуй стоит используя функцию получения размера файла зарезервировать не 20 как в примере а по полной память для считки всего файла целиком. 2Мб это еще не так много.
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 25.11.2011
Сообщений: 12
|
![]()
Характер редактирования: изменить бит №164 на 0, бит №172 на 1, бит №180 на 1 и еще несколько десятков. Это можно сделать напрямую?
Как указать определённый бит? |
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Считай весь файл в массив, в массиве изменяй нужные байты, и после изменения записывай все.
Или: Открываешь файл как binary, становишся на позицию 164/8, считываешь символ, меняешь в нем биты, перемещаешся на позицию в файле назад, записываешь измененный байт. Я имею ввиду вот такое: Код:
I'm learning to live...
Последний раз редактировалось Stilet; 06.05.2012 в 17:01. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 25.11.2011
Сообщений: 12
|
![]()
Stilet
Виталик! Мой файл формата wave. Разве нельзя открыть его в двоичном виде, побитово, что в любой ячейке массива были только нули и единицы? P.S. я тебе стукнул в аську |
![]() |
![]() |
![]() |
#7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
![]() Байт - атомарная единица данных Считывй побайтно, и битовыми масками меняй его. Цитата:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 25.11.2011
Сообщений: 12
|
![]()
это как? 1 byte = 8 bit
P.S. не понимаю что такое битовые маски. Можешь объяснить? Код:
P.S. Почему-то не могу переделать код что бы считывался любой файл в бинарном виде. =( приходится брать txt с единицами и нулями внутри. Последний раз редактировалось Stilet; 07.05.2012 в 07:57. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]() Код:
|
![]() |
![]() |
![]() |
#10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
А вот в строку биты переводить - лишнее.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
потоки | MetR | Помощь студентам | 0 | 11.12.2011 19:07 |
потоки | AlexMe | Общие вопросы Delphi | 3 | 18.07.2011 05:17 |
Потоки | Florento | Общие вопросы Delphi | 4 | 17.06.2011 16:16 |
потоки | tanek | Помощь студентам | 6 | 15.03.2010 21:42 |
Потоки в С++ | BioS | Общие вопросы C/C++ | 2 | 09.01.2010 21:34 |