0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

四种方法教你判断设备的字节序

学益得智能硬件 来源:学益得智能硬件 2024-11-28 10:47 次阅读

如何判断设备的字节序,提供 4 种方法给大家参考。

首先就是从概念入手。

所谓小端字节序,高字节存放在高地址,低字节存放在低地址;大端字节序反过来。

定义一个无符号 short 类型,初始化成 0x0102,定义一个 char 类型指针,保存 num 的地址。

int main()
{
    unsigned short num = 0x0102;


    unsigned char *p = (unsigned char *)#


    if (p[0] == 0x02)
        printf("小端字节序
");
    else if (p[0] == 0x01)
        printf("大端字节序
");
        
return 0;
}

如果 p[0] 是 0x02,说明低地址保存了低字节,设备就是小端。

如果 p[0] 是 0x01,说明低地址保存了高字节,设备就是大端。

第二个,使用联合体。

联合体的特点是所有成员共享同一块内存。

union Test
{
    char p[2];
    short val;
};

在这个联合体中,char 类型的数组和 short 类型变量占用了同一块内存,数组的第 0 个元素一定存放在低地址。

如果 p[0] 保存的是 0x02,说明低地址保存了低字节,设备是小端。反之,是大端。

int main()
{
    union Test t;
    t.val = 0x0102;
    
    if (t.p[0] == 0x02)
        printf("小端字节序
");
    else if (t.p[0] == 0x01)
        printf("大端字节序
");
        
return 0;
}

这种方法跟第一种差不多。

第三个,通过宏来判断。

比如在 Linux 系统中,包含头文件,使用 BYTE_ORDER 就能直观的看出字节序。

#include 


int main()
{
    if (__BYTE_ORDER == __LITTLE_ENDIAN)
        printf("小端字节序
");
    else if (__BYTE_ORDER == __BIG_ENDIAN)
        printf("大端字节序
");

return 0;
}

第四个,使用结构体位域。

这个方法同样是从概念入手,判断 p[0] 这个低地址保存的是低字节还是高字节。

#include 


struct Test
{
    unsigned int a : 8;
    unsigned int b : 8;
    unsigned int c : 16;
};


int main()
{
    struct Test t = {0x01, 0x02, 0x0304};
    unsigned char *p = (unsigned char *)&t;


    if (p[0] == 0x01)
        printf("小端字节序
");
    else if (p[0] == 0x04)
        printf("大端字节序
");


    return 0;
}

不过这个方法不太推荐,位域的具体布局取决于编译器,跟环境有关,所以这种方法,参考下就行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 设备
    +关注

    关注

    2

    文章

    4482

    浏览量

    70552
  • 字节
    +关注

    关注

    0

    文章

    40

    浏览量

    13718

原文标题:四种方法判断设备的字节序

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电气设备四种工作状态

    在供配电系统中,电器设备的状态管理是确保电力系统稳定运行和用电安全的关键。根据电气设备的工作条件和安全要求,通常将电气设备备的状态分为四种不同的状态:运行状态、热备用状态、冷备用状态和
    的头像 发表于 10-04 11:15 1290次阅读

    滤波电路的四种类型是什么

    滤波电路是电子电路中非常重要的一部分,它主要用于对信号进行频率选择,即允许特定频率范围内的信号通过,而阻止其他频率的信号。滤波电路根据其特性可以分为四种基本类型:低通滤波器(Low-Pass
    的头像 发表于 08-08 16:25 1850次阅读

    pwm脉宽调制的四种方法有哪些

    于电机控制、LED调光、音频处理等领域。以下是四种常见的PWM脉宽调制方法: 固定频率PWM(Fixed-Frequency PWM) 固定频率PWM是一最基本的PWM调制方法。在这
    的头像 发表于 08-08 15:10 1009次阅读

    负反馈的四种类型及判断方法

    类型及其判断方法。 一、负反馈的四种类型 比例负反馈 比例负反馈是指系统输出与输入之间的反馈关系是线性的,即输出的变化与输入的变化成正比。在比例负反馈中,当系统输出增加时,输入会相应减少,反之亦然。这种反馈机制有
    的头像 发表于 08-02 11:01 1780次阅读

    简述四种基本触发器及其功能

    在数字电路设计中,触发器是一基本且重要的存储元件,用于存储二进制信息(即0和1)。根据功能和应用场景的不同,触发器可以分为多种类型,其中四种基本触发器包括RS触发器、JK触发器、D触发器和T触发器。以下是对这四种基本触发器及其
    的头像 发表于 07-27 14:59 7200次阅读

    热电偶补偿的四种方式有哪些

    的准确性。以下是四种常见的热电偶补偿方式: 冷端补偿法 冷端补偿法是一常见的热电偶补偿方法,其基本原理是在热电偶的冷端(即测量端)加入一个与热电偶材料相同的金属或合金,以补偿热电偶在冷端产生的热电势。这
    的头像 发表于 07-23 17:06 2120次阅读

    介绍MCUboot支持的四种升级模式(2)

    介绍MCUboot支持的四种升级模式,分别是Overwrite、Swap、Direct XIP和加载到RAM中执行。由于FSP不支持第四种——加载到RAM中执行,因为我们重点介绍前三
    的头像 发表于 06-13 10:56 796次阅读
    介绍MCUboot支持的<b class='flag-5'>四种</b>升级模式(2)

    电气设备的状态有哪四种

    电气设备的状态可以分为四种:正常状态、异常状态、故障状态和紧急状态。这四种状态涵盖了电气设备在运行过程中可能遇到的各种情况。本文将详细分析这四种
    的头像 发表于 06-05 16:47 4030次阅读

    如何理解IGBT的四种SOA?

    如何理解IGBT的四种SOA? IGBT的四种SOA表示了IGBT器件在不同工作状态下的安全操作区域。这四种SOA是:Continuous SOA、Limited SOA、Pulse SOA
    的头像 发表于 02-18 11:04 1000次阅读

    三相异步电动机调速的方法有哪些?四种常用方法解析

    三相异步电动机调速的方法有哪些?四种常用方法解析  三相异步电动机调速的方法有很多种,其中较为常用的包括电压调制、变频调速、转差调速和自耦调速等。下面将对这
    的头像 发表于 02-01 16:24 7319次阅读

    电气设备四种状态介绍

    电气设备的运行、热备用、冷备用和检修状态是描述电力系统中设备工作模式的术语。这些状态反映了设备在电力系统中的不同角色和功能,以及它们对系统可靠性和稳定性的影响。以下是这四种状态的详细解
    的头像 发表于 01-25 14:46 3297次阅读
    电气<b class='flag-5'>设备</b><b class='flag-5'>四种</b>状态介绍

    电子负载的四种功能实现原理

    电子负载的四种功能实现原理  电子负载是一用于模拟负载、测试和评估电源、电池和其他电子设备的工具。它可以模拟电子负载的特性,并能够提供不同的负载条件。电子负载主要通过四种功能来实现:
    的头像 发表于 01-18 14:13 2408次阅读

    四种微调大模型的方法介绍

    全微调(Full Fine-tuning):全微调是指对整个预训练模型进行微调,包括所有的模型参数。在这种方法中,预训练模型的所有层和参数都会被更新和优化,以适应目标任务的需求。
    发表于 01-03 10:57 2.4w次阅读
    <b class='flag-5'>四种</b>微调大模型的<b class='flag-5'>方法</b>介绍

    设备管理通道控制四种方式

    设备管理的主要任务之一是控制设备和内存或处理机之间的数据传送,外围设备和内存之间的输入/输出控制方式有四种,下面分别介绍。
    发表于 12-08 14:05 995次阅读
    <b class='flag-5'>设备</b>管理通道控制<b class='flag-5'>四种</b>方式

    四种接近传感器PK,谁能胜出?

    四种接近传感器PK,谁能胜出?
    的头像 发表于 12-07 09:28 1662次阅读
    <b class='flag-5'>四种</b>接近传感器PK,谁能胜出?