ESP8266字節序與比特序的驗證

概述

在網絡應用開發以及定義C語言結構體位域時涉及到字節序與比特序的問題,本文驗證了ESP8266的這一特性。

術語

大小端模式(記憶:大正小反)

大端模式(網絡字節序):
是指數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中,這樣的存儲模式有
點兒類似於把數據當作字符串順序處理:地址由小向大增加,而數據從高位往低位放;正:這和我們的閱讀習慣一致。

小端模式:
是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中,這種存儲模式將地
址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低。反:這和我們的閱讀習慣不一致。

測試代碼與結果

typedef struct {
    unsigned h1:4;
    unsigned h2:4;
    unsigned h3:4;
    unsigned h4:4;
} NiffH16;

/*
 * 驗證ESP8266的字節序與比特序,下面這段程序輸出是:
    p[0] = 34
    p[1] = 12
    h1 = 04
    h2 = 03
    h3 = 02
    h4 = 01
 */
static void ICACHE_FLASH_ATTR verifyEndian(void)
{
    uint16_t a = 0x1234;
    uint8_t *p = (uint8_t *)&a;
    NiffH16 *nh = (NiffH16 *)&a;
    iotgoInfo("p[0] = %02X", p[0]);
    iotgoInfo("p[1] = %02X", p[1]);
    iotgoInfo("h1 = %02X", nh->h1);
    iotgoInfo("h2 = %02X", nh->h2);
    iotgoInfo("h3 = %02X", nh->h3);
    iotgoInfo("h4 = %02X", nh->h4);
}

結論

ESP8266爲小端字節序,比特序與字節序一致。


閱讀原文 | 作者官網 | 公衆號 | Feed | 訂閱 | 發私信

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章