#include <nitro/mi.h>
#define MI_SwapEndian8(val) (u8)(val)
#define MI_SwapEndian16(val) (u16)((((val) & 0xFF00UL) >> 8UL) | (((val) & 0x00FFUL) << 8UL))
#define MI_SwapEndian32(val) (u32)( \
(((val) & 0xFF000000UL) >> 24UL) | \
(((val) & 0x00FF0000UL) >> 8UL) | \
(((val) & 0x0000FF00UL) << 8UL) | \
(((val) & 0x000000FFUL) << 24UL) )
#define MI_SwapEndian64(val) (u64)( \
(((val) & 0xFF00000000000000ULL) >> 56ULL) \
| (((val) & 0x00FF000000000000ULL) >> 40ULL) \
| (((val) & 0x0000FF0000000000ULL) >> 24ULL) \
| (((val) & 0x000000FF00000000ULL) >> 8ULL) \
| (((val) & 0x00000000FF000000ULL) << 8ULL) \
| (((val) & 0x0000000000FF0000ULL) << 24ULL) \
| (((val) & 0x000000000000FF00ULL) << 40ULL) \
| (((val) & 0x00000000000000FFULL) << 56ULL) )
val | The value whose endianity is to be converted. Note: Because this is a macro, evaluation is performed several times. |
Value for which endianness was converted (u16, u32, u64
).
Converts the endian of the specified (16-, 32-, or 64-bit) value. If little endian is detected before conversion, big endian results after conversion.
Note: Because this is a macro, arguments are evaluated several times.
These 8-bit versions do not actually perform any conversions, but they have been included for uniform source code visibility.
MI_Load*
MI_Store*
MI_HTo*
MI_*ToH*
2007/11/21 Added a description of the 64-bit version.
2006/06/13 Added a description of the 8-bit version.
2006/04/05 Initial version.
CONFIDENTIAL