国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

大小端定義與應用場景及C語言中大小端的實現

嵌入式應用開發 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-02-28 08:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大小端定義:

大端模式:數據的高字節保存在內存的低地址中,數據的低字節保存在內存的高地址中;

小端模式:數據的高字節保存在內存的高地址中,數據的低字節保存在內存的低地址中;

舉個例子來說明,我們利用485進行通訊,采用的大端模式傳輸16進制數據為:01 23/ef 05,按照大端模式的數據為2301和05ef,轉化為10進制為8961和1519。說白了就是直接將數據拼接進行轉化。

應用場景:

網絡上數據傳輸上往往采用大端模式進行數據傳輸;跨硬件平臺進行數據傳輸,數據格式存在差異,存儲字節的順序可能不同;采用通訊協議每次傳輸數據的字節有一點限制等

例如char類型數據只占一個字節,傳輸可以直接傳輸,但是對于非char類型的數據,要在RS485CAN通訊過程中就需要進行大小端數據的轉化。

c語言中大小端的實現:

注意在轉化過程中需要保持相同的大小端數據格式,不可以形成同一組數據中同時存在大端和小端數據,容易讓使用者或者二次開發者產生誤解。

z這里主要講解大小端數據轉化的原理與相關的代碼:

首先常用的有16位數據和32位數據大小端轉化,作為嵌入式代表的STM32單片機的unsingned int型:

/* 32位數據小端模式 */
#define uint32_data(x)    //定義32位數據,這里x為用戶自己定義的需要轉化的數據
(uint32_t)((((uint32_t)(x) & 0xff000000) >> 24) |\            //這里是ff000000不是ffff0000,按照每兩個字節進行的轉化
                    (((uint32_t)(x) & 0xff000000) >> 8) |\    //數據右移8位
                    (((uint32_t)(x) & 0x0000ffff) << 8) |\    //數據左移8位
                    (((uint32_t)(x) & 0x000000ff) << 24)\
             )  
/* 16位數據小端模式 */             
#define uint16_data(x)    //定義16位數據,這里x為用戶自己定義的需要轉化的數據
(uint16_t)((((uint16_t)(x) & 0x00ff) << 8) |\
          ((((uint16_t)(x) & 0xff00) >> 8) \
          )

按照上述代碼測試一下,主函數調用一下,這里直接打印即可:

printf("%#x\n",uint32_data(0xef847321));
printf("%#x\n",uint16_data(0xef84));

輸出結果:

217384ef

84ef

假如需要將一個int型can_data數據轉化為小端模式,可以嘗試如下代碼:

can_data[0] = (u8)(num & 0xFF);           //取數據低8位
can_data[1] = (u8)((num >> 8) & 0xFF);    //數據右移8位,將低位移除保留高位數據

假如需要將一個int型can_data數據轉化為大端模式,可以嘗試如下代碼:

can_data[2] = (u8)((num >> 8) & 0xFF);           //數據右移8位,將低位移除保留高位數據
can_data[3] = (u8)(num & 0xFF);                  //取數據為低8位

總結:

數據的大小端對不同平臺數據傳輸具有重要意義,在具體使用時需要根據需要進行數據轉化。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據傳輸
    +關注

    關注

    9

    文章

    2201

    瀏覽量

    67579
  • 硬件
    +關注

    關注

    11

    文章

    3595

    瀏覽量

    69011
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145581
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于Arm平臺的int8 Conformer模型部署

    在邊緣側運行高質量的語音與音頻模型頗具挑戰,需滿足時延、內存、功耗和模型大小等多方面的嚴苛約束。不同于云端部署,邊緣側系統通常離線運行,需兼顧用戶隱私與可預測的實時性能。這些落地場景涵蓋側語音轉文本、語音助手、語音控制的物聯網
    的頭像 發表于 02-24 10:23 ?236次閱讀
    基于Arm平臺的<b class='flag-5'>端</b>到<b class='flag-5'>端</b>int8 Conformer模型部署

    C語言函數指針的六個高級的應用場景

    函數指針是一種非常強大的編程工具,它可以讓我們以更加靈活的方式編寫程序。在本文中,我們將介紹 6 個函數指針的高級應用場景,并貼出相應的代碼案例和解釋。 回調函數 回調函數是指在某個事件發生時被
    發表于 01-04 12:25

    C語言回調函數原來這么簡單

    ” 這個概念,它是回調函數能夠實現的重要基礎。 1、函數指針學習過C語言的伙伴都知道,C語言中的靈魂 — 指針。可以毫不猶豫的說,要檢驗你對
    發表于 12-30 06:45

    請問C語言中整形溢出的解決方法有哪些?

    C語言中整形溢出的解決方法有哪些?
    發表于 12-29 07:33

    單片機c語言中定義字節怎么定義

    定義位可以用***it但是定義字節呢?還有就是比如匯編中的DPTR的DPH和DPL在c語言中怎樣定義的呢?
    發表于 12-29 06:32

    請問C語言中整形溢出會產生哪些異常行為?

    C語言中整形溢出會產生哪些異常行為?
    發表于 12-26 07:05

    請問C語言中整形溢出對哪些應用場景影響較大?

    C語言中整形溢出對哪些應用場景影響較大
    發表于 12-24 08:24

    Typedef在C語言中的應用

    Typedef 在C語言中頻繁用以聲明一個已經存在的數據類型的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子: #define dPS struct s * typedef
    發表于 12-22 13:53

    C語言中可以嵌套匯編語言嗎?

    請問C語言中可以嵌套匯編語言嗎?
    發表于 12-15 08:14

    觸控板的“大小之爭”,真的只是數字差異?

    在筆記本電腦的使用體驗中,觸控板是僅次于鍵盤的核心交互部件。不少用戶在選擇設備時會疑惑:大觸控板和小尺寸觸控板,難道僅僅是面積大小不同嗎?實則不然。從日常操作的流暢度到復雜功能的實現,從單一場景
    的頭像 發表于 10-30 15:32 ?537次閱讀

    光纜怎么分ab

    光纜分AB是通信工程中的關鍵步驟,主要用于確保光纖連接的極性正確,避免信號傳輸錯誤。以下是光纜分AB的詳細說明: 一、AB定義與作用 定義
    的頭像 發表于 09-28 09:38 ?1969次閱讀

    黑芝麻智能全棧式輔助駕駛系統的應用場景

    黑芝麻智能推出的全新一代全棧輔助駕駛系統,以武當C1200系列高算力芯片為基石,深度融合自研感知算法,實現場景感知到車輛控制的完全閉
    的頭像 發表于 09-09 17:19 ?2581次閱讀

    NCS更改MTU大小

    NCS更改MTU大小 一、 什么是MTU MTU(Maximum Transmission Unit)即最大傳輸單元,它定義了藍牙網絡層協議一次能傳輸的最大數據量。在藍牙低功耗(BLE)通信
    的頭像 發表于 06-27 17:13 ?788次閱讀
    NCS更改MTU<b class='flag-5'>大小</b>

    深入理解C語言C語言循環控制

    改變程序的執行流程,使代碼更加靈活和可控。本文將詳細介紹這些語句的作用及其應用場景,并通過示例代碼進行說明。Part.1break語句C語言中break語句有兩種
    的頭像 發表于 04-29 18:49 ?2044次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環控制

    C語言中結構體與聯合體的深度解析:內存布局與應用場景

    一、基礎概念與核心差異 1.1 結構體(Struct)的本質 **結構體是C語言中實現數據封裝的基石,其核心特征在于內存獨立性。每個成員變量在內存中按聲明順序依次排列,形成連續的內存塊。以學生信息為
    發表于 04-08 09:18