Недавно застрял на простой задаче - преобразовать 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-ти битная переменная, склеенная из двух байт.
Комментариев нет:
Отправить комментарий