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 | 订阅 | 发私信

你可能感兴趣的:(8266)