16 Schalterstellungen in HEX umrechnen und per seriell senden?

Das Problem scheint ja zu sein, die 16 einzelnen Werte bitweise zusammenzubasteln.

unsigned int result=0;
for (byte i=0; i<16; i++){
  result |= (switch[i]&1)<<i;
}

oder so ähnlich oder auch eleganter ...