0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

四種方法教你判斷設(shè)備的字節(jié)序

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2024-11-28 10:47 ? 次閱讀

如何判斷設(shè)備的字節(jié)序,提供 4 種方法給大家參考。

首先就是從概念入手。

所謂小端字節(jié)序,高字節(jié)存放在高地址,低字節(jié)存放在低地址;大端字節(jié)序反過來。

定義一個無符號 short 類型,初始化成 0x0102,定義一個 char 類型指針,保存 num 的地址。

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


    unsigned char *p = (unsigned char *)#


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

如果 p[0] 是 0x02,說明低地址保存了低字節(jié),設(shè)備就是小端。

如果 p[0] 是 0x01,說明低地址保存了高字節(jié),設(shè)備就是大端。

第二個,使用聯(lián)合體。

聯(lián)合體的特點是所有成員共享同一塊內(nèi)存。

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

在這個聯(lián)合體中,char 類型的數(shù)組和 short 類型變量占用了同一塊內(nèi)存,數(shù)組的第 0 個元素一定存放在低地址。

如果 p[0] 保存的是 0x02,說明低地址保存了低字節(jié),設(shè)備是小端。反之,是大端。

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

這種方法跟第一種差不多。

第三個,通過宏來判斷。

比如在 Linux 系統(tǒng)中,包含頭文件,使用 BYTE_ORDER 就能直觀的看出字節(jié)序。

#include 


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

return 0;
}

第四個,使用結(jié)構(gòu)體位域。

這個方法同樣是從概念入手,判斷 p[0] 這個低地址保存的是低字節(jié)還是高字節(jié)。

#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("小端字節(jié)序
");
    else if (p[0] == 0x04)
        printf("大端字節(jié)序
");


    return 0;
}

不過這個方法不太推薦,位域的具體布局取決于編譯器,跟環(huán)境有關(guān),所以這種方法,參考下就行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    4530

    瀏覽量

    70759
  • 字節(jié)
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    13775

原文標題:四種方法判斷設(shè)備的字節(jié)序

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    電氣設(shè)備四種工作狀態(tài)

    在供配電系統(tǒng)中,電器設(shè)備的狀態(tài)管理是確保電力系統(tǒng)穩(wěn)定運行和用電安全的關(guān)鍵。根據(jù)電氣設(shè)備的工作條件和安全要求,通常將電氣設(shè)備備的狀態(tài)分為四種不同的狀態(tài):運行狀態(tài)、熱備用狀態(tài)、冷備用狀態(tài)和
    的頭像 發(fā)表于 10-04 11:15 ?2789次閱讀

    反饋的判斷方法有哪些

    各種類型的電子電路。 二、正反饋與負反饋的判斷 采用瞬時極性法來判斷正反饋與負反饋是一常用的方法。具體來說,如果反饋信號與原輸入信號極性相同,則是正反饋;如果反饋信號與原輸入信號極性
    的頭像 發(fā)表于 09-20 17:41 ?1809次閱讀
    反饋的<b class='flag-5'>判斷</b><b class='flag-5'>方法</b>有哪些

    濾波電路的四種類型是什么

    濾波電路是電子電路中非常重要的一部分,它主要用于對信號進行頻率選擇,即允許特定頻率范圍內(nèi)的信號通過,而阻止其他頻率的信號。濾波電路根據(jù)其特性可以分為四種基本類型:低通濾波器(Low-Pass
    的頭像 發(fā)表于 08-08 16:25 ?3259次閱讀

    pwm脈寬調(diào)制的四種方法有哪些

    于電機控制、LED調(diào)光、音頻處理等領(lǐng)域。以下是四種常見的PWM脈寬調(diào)制方法: 固定頻率PWM(Fixed-Frequency PWM) 固定頻率PWM是一最基本的PWM調(diào)制方法。在這
    的頭像 發(fā)表于 08-08 15:10 ?1562次閱讀

    負反饋的四種類型及判斷方法

    類型及其判斷方法。 一、負反饋的四種類型 比例負反饋 比例負反饋是指系統(tǒng)輸出與輸入之間的反饋關(guān)系是線性的,即輸出的變化與輸入的變化成正比。在比例負反饋中,當系統(tǒng)輸出增加時,輸入會相應(yīng)減少,反之亦然。這種反饋機制有
    的頭像 發(fā)表于 08-02 11:01 ?2839次閱讀

    受控源四種類型及表示方法

    受控源是電子電路中的一特殊元件,它具有一個或多個控制量,其輸出電壓或電流與控制量之間存在一定的函數(shù)關(guān)系。受控源有四種基本類型:電壓控制電壓源(VCVS)、電流控制電壓源(CCVS)、電壓控制電流源
    的頭像 發(fā)表于 07-29 15:15 ?6397次閱讀

    簡述四種基本觸發(fā)器及其功能

    在數(shù)字電路設(shè)計中,觸發(fā)器是一基本且重要的存儲元件,用于存儲二進制信息(即0和1)。根據(jù)功能和應(yīng)用場景的不同,觸發(fā)器可以分為多種類型,其中四種基本觸發(fā)器包括RS觸發(fā)器、JK觸發(fā)器、D觸發(fā)器和T觸發(fā)器。以下是對這四種基本觸發(fā)器及其
    的頭像 發(fā)表于 07-27 14:59 ?1.1w次閱讀

    熱電偶補償?shù)?b class='flag-5'>四種方式有哪些

    的準確性。以下是四種常見的熱電偶補償方式: 冷端補償法 冷端補償法是一常見的熱電偶補償方法,其基本原理是在熱電偶的冷端(即測量端)加入一個與熱電偶材料相同的金屬或合金,以補償熱電偶在冷端產(chǎn)生的熱電勢。這
    的頭像 發(fā)表于 07-23 17:06 ?2987次閱讀

    介紹MCUboot支持的四種升級模式(2)

    介紹MCUboot支持的四種升級模式,分別是Overwrite、Swap、Direct XIP和加載到RAM中執(zhí)行。由于FSP不支持第四種——加載到RAM中執(zhí)行,因為我們重點介紹前三。
    的頭像 發(fā)表于 06-13 10:56 ?997次閱讀
    介紹MCUboot支持的<b class='flag-5'>四種</b>升級模式(2)

    電氣設(shè)備的狀態(tài)有哪四種

    電氣設(shè)備的狀態(tài)可以分為四種:正常狀態(tài)、異常狀態(tài)、故障狀態(tài)和緊急狀態(tài)。這四種狀態(tài)涵蓋了電氣設(shè)備在運行過程中可能遇到的各種情況。本文將詳細分析這四種
    的頭像 發(fā)表于 06-05 16:47 ?4833次閱讀

    如何理解IGBT的四種SOA?

    如何理解IGBT的四種SOA? IGBT的四種SOA表示了IGBT器件在不同工作狀態(tài)下的安全操作區(qū)域。這四種SOA是:Continuous SOA、Limited SOA、Pulse SOA
    的頭像 發(fā)表于 02-18 11:04 ?1158次閱讀

    三相異步電動機調(diào)速的方法有哪些?四種常用方法解析

    三相異步電動機調(diào)速的方法有哪些?四種常用方法解析? 三相異步電動機調(diào)速的方法有很多種,其中較為常用的包括電壓調(diào)制、變頻調(diào)速、轉(zhuǎn)差調(diào)速和自耦調(diào)速等。下面將對這
    的頭像 發(fā)表于 02-01 16:24 ?8200次閱讀

    A/D轉(zhuǎn)換的四種誤差

    針對A/D轉(zhuǎn)換中可能出現(xiàn)的誤差,主要分為以下四種情況,漂移誤差、線型比例誤差、非線性誤差、非單調(diào)性誤差。還有那些能夠引起AD轉(zhuǎn)換出現(xiàn)比較大的誤差類別? 先說AD轉(zhuǎn)換是怎么取值的,假設(shè)輸入信號0-3V
    發(fā)表于 01-30 14:19

    電氣設(shè)備四種狀態(tài)介紹

    電氣設(shè)備的運行、熱備用、冷備用和檢修狀態(tài)是描述電力系統(tǒng)中設(shè)備工作模式的術(shù)語。這些狀態(tài)反映了設(shè)備在電力系統(tǒng)中的不同角色和功能,以及它們對系統(tǒng)可靠性和穩(wěn)定性的影響。以下是這四種狀態(tài)的詳細解
    的頭像 發(fā)表于 01-25 14:46 ?3977次閱讀
    電氣<b class='flag-5'>設(shè)備</b><b class='flag-5'>四種</b>狀態(tài)介紹

    電子負載的四種功能實現(xiàn)原理

    電子負載的四種功能實現(xiàn)原理? 電子負載是一用于模擬負載、測試和評估電源、電池和其他電子設(shè)備的工具。它可以模擬電子負載的特性,并能夠提供不同的負載條件。電子負載主要通過四種功能來實現(xiàn):
    的頭像 發(fā)表于 01-18 14:13 ?2957次閱讀