unsigned short LoadShort(const unsigned short* addr, unsigned offset /* = 0 */, bool little_endian_byte_swap /* = false */) { if ( ! addr ) return 0; // Return 0 if base address not set (i.e. invalid object) addr += offset; if ( ! little_endian_byte_swap ) return *addr; static unsigned short endian = 0x1234; if ( *(char*)(&endian) != 0x34 ) return *addr; const unsigned char* addr_c = reinterpret_cast(addr); return (*addr_c << 8) | *(addr_c+1); }