Попробую поправить, начиная с вычисления byte2:
Код
byte2 = i & 0xFF;
byte1 = (i>>8) & 0x0F;
byte1 |= 0byyyy0000;
Возможно, в первой и второй строке нужно будет использовать приведение к байтовому типу, но это зависит от того, в каком Си вы работаете. Под Виндой в VC++, например, корректнее будет написать так:
Код
byte2 = (BYTE)(i & 0xFF);
Сообщение отредактировал V_G - Nov 7 2009, 12:05