Unsigned is not always 32 bits. Use boost::uint32_t