0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
|
1 | |
Побитовое считывание файла02.05.2017, 20:31. Показов 12670. Ответов 17
Метки нет (Все метки)
Стоит задача:
Дан начальный файл любого формата (mp3,avi, и т.д.) Требуется считать его содержимое и представить его в виде битовой последовательности,у меня MVS 2013 Далее требуется произвести скремблирование и записать результирующий файл. Вопрос: Каким образом можно реализовать побитовое чтение файла?
0
|
02.05.2017, 20:31 | |
Ответы с готовыми решениями:
17
Открытие и побитовое чтение jpeg-файла какая функция осуществляет побитовое чтение файла Заменить считывание с клавиатуры на считывание из файла Побитовое считывание bmp-файла |
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
02.05.2017, 21:01 | 2 |
Что, весь файл в единую последовательность? Или блоками?
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
|
02.05.2017, 21:41 [ТС] | 3 |
В теории должно быть так:
Я читаю бит из файла, записываю его в ячейку регистра сдвига, xor этот бит с выходным битом регистра. В двух словах. Я не знаю, возможно ли сразу записывать бит в регистр или сначала нужно записать все биты в массив, и только потом записывать их в регистр. Если да, то года нужна только результирующая последовательность..
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
02.05.2017, 21:47 | 4 |
Чтение из файла идёт байтами, а там уже можешь отдельные биты брать.
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
|
02.05.2017, 22:10 [ТС] | 5 |
То есть считываю байт, разбиваю его на биты и записываю в массив
Тогда вопрос, как реализовать выделение байта? С помощью fget? Ничего дельного посему то не нашел, видимо плохо искал
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
02.05.2017, 22:13 | 6 |
Про какой массив ты говоришь? Массив байтов у тебя сразу будет. Считывание же блоком идёт. Просто объяви его и используй read().
0
|
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
|
||||||
02.05.2017, 22:19 | 7 | |||||
Выделить бит из байта можно операциями логического умножения и побитового смещения.
Лучше считывай из файла хотя бы 4 байтное целое и с ним работай по-битно. Потом следующее целое.
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
||||||
02.05.2017, 22:58 [ТС] | 8 | |||||
Можно сделать так?
По-моему так нельзя делать, да?
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
02.05.2017, 23:12 | 9 |
Зачем тебе вообще переносить биты в Arr? непосредственно в buff их нельзя использовать, что ли?
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
|
02.05.2017, 23:31 [ТС] | 10 |
До меня просто не доходит, как это сделать))
Просто я хотел сделать в отдельную функцию, а если использовать в buff то, как я вижу, придется в этой же функции и писать сам регистр сдвига.
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
02.05.2017, 23:31 | 11 |
Ну и что? Сдвиг поддерживается для целых типов, а так массивы надо обрабатывать.
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
|
02.05.2017, 23:33 [ТС] | 12 |
Хотя по идее можно же описать сам регистр в отдельной функции, а бит передавать ей в параметр.
Блин, без компа никак, надо пробовать Скажите, хотя бы с виду, вышеприведенный код рабочий?)
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
03.05.2017, 08:20 | 13 |
Нет.
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
|
03.05.2017, 09:01 [ТС] | 14 |
Что не так?
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
03.05.2017, 09:03 | 15 |
Много лишних циклов. Если тебе нужно именно 32, то считывай в int, и будет всего 1 цикл по битам.
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
||||||
03.05.2017, 09:11 [ТС] | 16 | |||||
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
03.05.2017, 09:35 | 17 |
Цикл так, а что там за функция, был же массив.
Никто кроме тебя не знает что дальше с этими битами делается, поэтому трудно сказать.
0
|
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
|
|
03.05.2017, 09:49 [ТС] | 18 |
Функция регистра сдвига - 21 ячейка в которую записываются биты, с 3 из них делаем xor и получается выходной бит, который xor с битом из файла. Далее следующий бит также xor с новым битом регистра на основе уже другой последовательности, сдвигает все предыдущие и записывается в первую ячейку.
Массив я убрал по вашему же совету, думаю передавать бит сразу в параметр функции будет лучше. Если вам позволяет время, можно конечно в ЛС, чтобы я подробно все объяснил, но сомневаюсь, что вам интересно это
0
|
03.05.2017, 09:49 | |
03.05.2017, 09:49 | |
Помогаю со студенческими работами здесь
18
Побитовое считывание числа в длинной арифметике Побитовое чтение файла Побитовое чтение файла Побитовое чтения файла Побитовое чтение файла Побитовое чтение текстового файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |