Отправлено
koyodza 14 февраля 2009 г. 00:03
В ответ на: уже разжевали ведь отправлено пользователем
koyodza 13 февраля 2009 г. 23:55
unsigned int y;// тут мы хотим результат. Предполагаем, что int имеет разрядность 16, в противном случае int везде замените на short
1. "В лоб": y = (unsigned int)get[0] + ((unsigned int)get[1])<<8; Не бойтесь сдвигов - их в коде не будет. Вместо "+" можно использовать "|" (побитовое ИЛИ) - результат тот же
2. Через UNION: typedef union { unsigned char B[2]; unsigned int w; } UN16; ..... UN16 x; ..... x.B[0] = get[0];// если у Вас BigEndian, поменяйте местами 0 и 1 x.B[1] = get[1]; y = x.w;