Combining HEX Digits

      value = 0x80;

      compliment = ~value; 
// => 0xFFFFFF7F

      codes[value] = (value << 24) | (compliment << 16) | (lower_part);
// => 0x80000000 | 0xFF7F0000 | (lower_part)

Fix:

compliment = (~value) & 0xFF;

Thanks, changing compliment to "(~value) & 0xFF" fixed the problem. Now I'll add the loop back in and test some IR codes!

16 bit int vs 32 bit int.

Doh! Right.