Стоит задача: Дан начальный двоичный файл любого формата (mp3,avi, и т.д.) Требуется считать его содержимое и представить его в виде битовой последовательности, язык реализации Borland C++ 3.1 Далее требуется произвести скремблирование и записать результирующий файл. Вопрос: Каким образом можно реализовать побитовое чтение файла?
1 бит - это 1/8 часть байта, т.е. Code: const Bit = 1024 div 8; затем цикл от 0 до общего размера. и там как то так. в общем развивайте идею)
можно сделать массив констант чисел степени двойки (1,2,4...128) и каждое число (точнее аски-код символа) проверять. 1.Берем текущую константу (сначала 128) 2.Если константа меньше числа, то текущий бит (1-ый) равен 0, иначе вычитаем из числа константу и текущий бит равен 1. 3.Возвращаемся на шаг 1 для следующего бита (2 бит и константа 64) и т.д. пока мы не проверим все биты. также во многих языках можно сдлеать так: Code: if x and 128 > 0 then begin //1-ый бит = 1 end else begin //1-ый бит = 0 end;
а кто тебе не дает читать по 1 байту и сразу разбивать на биты? Допустим можеш к примеру описать структуру typedef struct _BITS { BYTE b0:1; BYTE b1:1; BYTE b2:1; BYTE b3:1; BYTE b4:1; BYTE b5:1; BYTE b6:1; BYTE b7:1; } BITS, *PBITS; И теперь просто создай переменную BITS b; и считывай сразу в ней 1 байт. И у тебя есть сразу доступ к битам. b.b1 b.b3 итд итп