LINUX.ORG.RU

Копирования массива


0

0

Кому-нибудь приходилось иметь дело с копированием произвольного количества бит данных из одного массива в другой? При этом точка начала копирования из исходного массива определяется не не индексом в байтах, а индексом в битах.


как я понял Вашу формулировку, вам надо скопировать
в начало одного массива данные из другого массива,
причём индекс начала задан в битах.

если надо копировать целое число байт, то где-то так :
void bitcp(unsigned char *dst,unsigned char *src,size_t start,size_t length) {
  size_t pos;
  size_t shift;
  pos=start/8;
  shift=start%8;
  for(;length;length--,dst++,src++) {
    (*dst)=src[0]<<shift | src[1]>>(8-shift);
  }  
}

писанно с руки - НЕ ТЕСТИРОВАЛОСЬ !

p.s. если объём надо задавать тоже в битах, то танцы с последним байтом исполните сами.

p.p.s. если я неправильно понял задачу, и смещение получателя=смещение отправителя, то всё совсем элементарно

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Размер копируемых данных определен в битах. Потому первый байт скопированного массива может содержать некоторое количество начальных нулевых бит. Ваш пример скопирует оставшуюся часть данных, спасибо.

Tsahes
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.