Я понимаю, что два фрагмента информации (версия и количество) хранятся в виде пары двух кусочков (4-битных фрагментов) в одном байте, поэтому я думаю, что вы подумали о типе unsigned char
вместо unsigned short
( в этом случае вы бы разбили его на два байта). Если это правильно, у нас есть два случая упаковки клевов:
Случай 1: версия старшего куска (биты 4-7) и число младшего куска (биты 0-3)
unsigned char ver = c >> 4;
unsigned char count = (c & 0x0f);
Случай 2: счетчик - старший полубайт (биты 4-7), а версия - младший полубайт (биты 0-3)
unsigned char count = c >> 4;
unsigned char ver = (c & 0x0f);
где c - байт, содержащий информацию и объявленный как:
unsigned char c;
и битовая нумерация начинается с нуля для младшего значащего бита.