Реализовать функцию копирования битовой цепочки:
void bitcpy(unsigned char *dst, size_t dst_ofs,
unsigned char *src, size_t src_ofs, size_t bit_count);
src
указывает на начало буфера, хранящего в себе битовую цепочку.
src_ofs
— номер бита в цепочке.
0-й бит — младший бит первого байта (*src
),
7-й бит — старший бит первого байта,
8-й бит — младший бит второго байта (src[1]
) и т.д.
dst
и dst_ofs
имеют тот же смысл для результирующей цепочки.
bit_count
— количество копируемых битов.
Пример:
src
указывает на цепочку из 16 бит: 01100110 11111101
(байты 66 fd
).
dst
указывает на другую цепочку из 16 бит: 00000111 00000000
(e0 00
).
После вызова bitcpy(dst, 2, src, 8, 7)
цепочка в dst
меняется на следующую: 11110111 00000001
(f7 01
).
Поведение функции должно быть протестировано с помощью assert
.