#define MAX_NUM      3 // 変数の数
#define MAX_BIT_KETA 2 // 有効なビットの桁数

#include <stdio.h>

int main()
{
    unsigned char  fromData[MAX_NUM] = {0x03, 0x01, 0x02};
    unsigned short toData = 0;
    int i, j;

    for (i = 0; i < MAX_BIT_KETA; i++) {
        for (j = 0; j < MAX_NUM; j++) {
            toData <<= 1;
            if (fromData[j] & 0x01) {
                toData |= 0x01;
            }
            fromData[j] >>= 1;
        }
    }

    printf("%x", toData);
}