Guest User

memcmp_bits

a guest
Oct 5th, 2021
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. Необходимо начиная с "src_start" бита первого элемента буфера "src", скопировать (заменить содержимое!)
  2. "count" бит в буфер "dst" начиная с "dst_start" бита.
  3. Байты:          3-ий       2-ой       1-ый       0-ой
  4. src[4] = { 0101_1111, 0101_1111, 0101_1111, 0101_1111 }
  5. dst[4] = { 1100_1111, 0010_0000, 0010_0000, 1010_1010 }
  6. src_start = 3
  7. dst_start = 5
  8. count = 25 // Для примера: 4*8 - dst_start - 2(оставляем значение старших бит dst)
  9. memcpy_bit(uint8_t *dst, uint8_t dst_start, uint8_t *src, uint8_t src_start, uint8_t count);
  10. После выполнения функции:
  11. 1. младшие 5 бит 0-вого байта dst остались прежними
  12. 2. 2 старших бита 3-его байта dst остались прежними
  13.                                               ! 5-ый бит
  14. src     xx xx11 1101  0111 1101  0111 1101  011x xx     // сдвинул src так, чтобы src_start был над dst_start. x - игнорируемые биты
  15. dst[4] = { 1100_1111, 0010_0000, 0010_0000, 0110_1010 } // исходное значение
  16. dst[4] = { 1111_1101, 0111 1101  0111 1101, 0110_1010 } // результат
  17.  
Advertisement
Add Comment
Please, Sign In to add comment