Use uint16_t/uint32_t in the binary hash code - it doesn't make it any more portable, just makes the meaning of the code more explicit.