Theme NexT works best with JavaScript enabled
如果使用 vc 可以使用下面的函数
unsigned short _byteswap_ushort(unsigned short value);unsigned long _byteswap_ulong(unsigned long value);unsigned __int64 _byteswap_uint64(unsigned __int64 value);#include <climits> template <typename T>T swap_endian (T u) { static_assert (CHAR_BIT == 8 , "CHAR_BIT != 8" ); union { T u; unsigned char u8[sizeof (T)]; } source, dest; source.u = u; for (size_t k = 0 ; k < sizeof (T); k++) dest.u8[k] = source.u8[sizeof (T) - k - 1 ]; return dest.u; } swap_endian<uint32_t >(42 );
#ifdef _MSC_VER #include <stdlib.h> #define bswap_32(x) _byteswap_ulong(x) #define bswap_64(x) _byteswap_uint64(x) #elif defined(__APPLE__) #include <libkern/OSByteOrder.h> #define bswap_32(x) OSSwapInt32(x) #define bswap_64(x) OSSwapInt64(x) #elif defined(__sun) || defined(sun) #include <sys/byteorder.h> #define bswap_32(x) BSWAP_32(x) #define bswap_64(x) BSWAP_64(x) #elif defined(__FreeBSD__) #include <sys/endian.h> #define bswap_32(x) bswap32(x) #define bswap_64(x) bswap64(x) #elif defined(__OpenBSD__) #include <sys/types.h> #define bswap_32(x) swap32(x) #define bswap_64(x) swap64(x) #elif defined(__NetBSD__) #include <sys/types.h> #include <machine/bswap.h> #if defined(__BSWAP_RENAME) && !defined(__bswap_32) #define bswap_32(x) bswap32(x) #define bswap_64(x) bswap64(x) #endif #else #include <byteswap.h> #endif