/*
* 大端格式:字數據的高字節存儲在低地址,而字數據的低字節則存儲在高地址(數組第一字節存的是最大值)。
* 舉例:51單片機
* 小端格式:高存高地址,低存低地址(數組第一字節存的是最小值)。
* 舉例:AVR PIC 430 cortexM3 esp8266
* 大端格式:即低地址存高位數據
* 小端格式:即低地址存低位數據
* 舉個例子:
* 首先聲明一個int變量 a = 0x12345678; a的地址爲0x00600000;
* 那麼以小端存儲爲:
* 0x00600000 0x78;
* 0x00600001 0x56;
* 0x00600002 0x34;
* 0x00600003 0x12;
* 若以大端方式存儲:
* 0x00600000 0x12;
* 0x00600001 0x34;
* 0x00600002 0x56;
* 0x00600003 0x78;
*
* union rgb_t
* {
* uint8_t buf[4];
* uint32_t val;
* } cfg_rgb_t;
*
* uint32_t a = 0x12345678;
* cfg_rgb_t.val = a;
*
* I (669) app main: cfg_rgb_t.buf[3]:18 , cfg_rgb_t.buf[2]:52 , cfg_rgb_t.buf[1]:86 , cfg_rgb_t.buf[0]:120
* I (669) app main: cfg_rgb_t.buf[3]:0x12 , cfg_rgb_t.buf[2]:0x34 , cfg_rgb_t.buf[1]:0x56 , cfg_rgb_t.buf[0]:0x78
* I (669) app main: cfg_rgb_t.buf[3]:0x3FFF04E3, cfg_rgb_t.buf[2]:0x3FFF04E2, cfg_rgb_t.buf[1]:0x3FFF04E1, cfg_rgb_t.buf[0]:0x3FFF04E0
*/
static uint8_t cpu_endian;
void find_cpu_endian(void)
{
int x = 0x00000001;
if (*(char *)&x == 0x01)
{
/* 小端模式 */
cpu_endian = 0;
}
else
{
/* 大端模式 */
cpu_endian = 1;
}
}