Реклама

четверг, 15 августа 2013 г.

Преобразование 16 битного слова в 2 байта и обратно

  Недавно застрял на простой задаче - преобразовать 16-ти битное слово в два байта, а потом обратно - два байта в 16 бит.
   Чтоб не забыть в следующий раз...


 16 bit to 2 bytes
Пример на C для 16-ти бит:
 unsigned int x = 0b1010001000110011;  
 uint8_t xlow = x & 0xff;  
 uint8_t xhigh = (x >> 8);  

 Для xlow, младшего байта, делаем побитовое "И" с 0xFF, а для старшего байта xhigh делаем логический сдвиг вправо на восемь бит. В результате получим:
  xlow = 0b00110011;
  xhigh = 0b10100010;

2 bytes to 16 bit

 Здесь все проще:
 unsigned int x = (xhigh << 8) | xlow;

Что  переводится на русский, как: присваиваем 16-ти битной переменной x xhigh. Сдвигаем влево на восемь разрядов. Производим побитовое "ИЛИ" с xlow, тем самым заполняя освободившиеся младшие восемь бит после сдвига.
Как следствие этих манипуляций - 16-ти битная переменная, склеенная из двух байт.

Комментариев нет:

Отправить комментарий