Просмотр полной версии : Побитовое чтение бинарника
Стоит задача:
Дан начальный двоичный файл любого формата (mp3,avi, и т.д.)
Требуется считать его содержимое и представить его в виде битовой последовательности, язык реализации Borland C++ 3.1
Далее требуется произвести скремблирование и записать результирующий файл.
Вопрос: Каким образом можно реализовать побитовое чтение файла?
RedFern.89
25.01.2010, 15:19
1 бит - это 1/8 часть байта, т.е.
const Bit = 1024 div 8;
затем цикл от 0 до общего размера. и там как то так. в общем развивайте идею)
можно сделать массив констант чисел степени двойки (1,2,4...128) и каждое число (точнее аски-код символа) проверять.
1.Берем текущую константу (сначала 128)
2.Если константа меньше числа, то текущий бит (1-ый) равен 0, иначе вычитаем из числа константу и текущий бит равен 1.
3.Возвращаемся на шаг 1 для следующего бита (2 бит и константа 64)
и т.д. пока мы не проверим все биты.
также во многих языках можно сдлеать так:
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 итд итп
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot