2013-01-15 02:30:42 +08:00
|
|
|
#include "endian.h"
|
|
|
|
|
2014-01-27 22:30:46 +08:00
|
|
|
#include "internal/convert.h"
|
2014-01-23 01:28:58 +08:00
|
|
|
|
2013-01-15 20:10:44 +08:00
|
|
|
#include <string.h>
|
|
|
|
|
2013-02-05 19:19:24 +08:00
|
|
|
typedef union
|
|
|
|
{
|
|
|
|
uint32_t integer;
|
2014-01-29 02:06:24 +08:00
|
|
|
uint8_t bytes[4];
|
2013-02-05 19:19:24 +08:00
|
|
|
} _internal_foug_int_bytes_32_convert_t;
|
|
|
|
|
2013-01-15 02:30:42 +08:00
|
|
|
foug_endianness_t foug_host_endianness()
|
|
|
|
{
|
2013-02-05 19:19:24 +08:00
|
|
|
_internal_foug_int_bytes_32_convert_t conv;
|
2013-01-15 02:30:42 +08:00
|
|
|
|
2013-02-05 19:19:24 +08:00
|
|
|
conv.integer = 0x01020408;
|
|
|
|
if (conv.bytes[0] == 0x08 && conv.bytes[3] == 0x01)
|
2013-01-15 02:30:42 +08:00
|
|
|
return FOUG_LITTLE_ENDIAN;
|
2013-02-05 19:19:24 +08:00
|
|
|
else if (conv.bytes[0] == 0x01 && conv.bytes[3] == 0x08)
|
2013-01-15 02:30:42 +08:00
|
|
|
return FOUG_BIG_ENDIAN;
|
2013-02-05 19:19:24 +08:00
|
|
|
else if (conv.bytes[1] == 0x08 && conv.bytes[2] == 0x01)
|
2013-01-15 02:30:42 +08:00
|
|
|
return FOUG_MIDDLE_ENDIAN;
|
|
|
|
else
|
|
|
|
return FOUG_OTHER_ENDIAN;
|
|
|
|
}
|
|
|
|
|