色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

串口數據傳輸共用體與結構體之間的轉換技巧

strongerHuang ? 來源:博客園 ? 2024-03-22 12:28 ? 次閱讀

嵌入式系統的串口數據傳輸都是以字節為單位,但是有些特殊的數據類型,比如浮點型float a=231.5,在內存是如何表示的呢?

我們知道浮點型float數據類型占用4個字節,實際上在內存當中a=0x43678000,只是嵌入式芯片訪問a時,知道a是浮點型數據,所以一次性讀取4個字節,而且也按照浮點型的數據表示規定,將a轉換為十進制的可讀數據231.5。

如果我們從串口接收到4個字節數據{0x43,0x67,0x80,0x00},如何把這4個字節的數據轉換為float型呢?

直接令float a=0x43678000這是不行的(不信的讀者可以自行驗證),這就是串口通訊當中經常遇到的問題,如果數據傳輸中包括了浮點型數據,在這里我們可以通過共用體或者結構體來解決。

對于共用體:

typedefunion { floatf; unsignedchars[4]; }Union_test;

f的4個字節和s[4]的4個字節是共用一個區域,如果我們令f=231.5,然后通過VS的監視窗查看s[4]的數值,下面是測試程序:

#include //共用體 //floatf;//4個字節 //chars[4];//4個字節 typedefunion { floatf; unsignedchars[4]; }Union_test; typedefstructst { floatf1; }Struct_test; voidmain(void) { floata=231.5; Union_testx; Struct_testz; x.f=a; z=*(Struct_test*)(&(x.s)); printf("z=%.2f ",(double)z.f1); printf("Endofthisprogramme "); }

監視結果如下所示:

9d798758-e7ea-11ee-a297-92fbcf53809c.jpg

我們同樣適用結構體做了相同的實驗,將數組s[4]={0x00,0x80,0x67,0x43}的首地址s[0]強制轉換賦值給結構體z,最后打印輸出的結果也是231.5

這里我們看到原本應該是0x4367_8000的數據實際存儲的時候變成了00H 80H 67H 43H,這是因為計算機系統使用了小端存儲,什么是小端存儲呢?

我們都知道,對于一個超過一個字節的數據,其在計算機中的存儲需要跨越字節。某些機器選擇在存儲器中按照從最低為有效字節到最高有效字節的順序存儲對象,而另一些機器則按照從最高為有效字節到到最低為有效字節的順序存儲,前一種存儲方式被稱為小端存儲,后一種方式被稱為大端存儲。

舉個例子,對于十六進制數0x01234567,其字節的存儲順序便依賴于機器,如下:

9d8c54d2-e7ea-11ee-a297-92fbcf53809c.png

我們可以通過下面的函數測試是大端存儲還是小端存儲:

voidtest(void) { inta=1; unsignedchar*start=&a; if(*start==1) printf("小端存儲"); elseif(*start==0) printf("大端存儲"); }

審核編輯:黃飛

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

    關注

    41

    文章

    3587

    瀏覽量

    129436
  • 數據傳輸
    +關注

    關注

    9

    文章

    1880

    瀏覽量

    64557
  • 內存
    +關注

    關注

    8

    文章

    3019

    瀏覽量

    74003
  • 串口
    +關注

    關注

    14

    文章

    1551

    瀏覽量

    76426

原文標題:串口數據傳輸當中的共用體和結構體轉換

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言-枚舉、共用

    前面章節學習了結構結構里可以按順序存放相同或者不同的數據類型,每個成員都有它對應的存儲空間。 而
    的頭像 發表于 09-09 11:31 ?969次閱讀

    socket 傳輸結構 省去字符與數據轉換

    socket通訊中send函數直接傳送的是字符串為了避免客戶端和服務器斷的數據格式轉換,使用結構傳輸較為合適---------------
    發表于 09-25 16:58

    結構-共用和用戶定義類型

    結構-共用和用戶定義類型
    發表于 01-31 10:48

    模擬數字轉換數據傳輸

    的穩定性,令數據傳輸出現誤碼。克服這些問題的其中一個辦法是采用低電壓差分信號 (LVDS) 數據總線。圖 1 是其中一種模擬/數字轉換器的結構框圖,帶有LVDS 輸出信號,驅動專用集成
    發表于 07-12 06:18

    串口傳輸結構是什么意思

    串口傳輸 結構就是 把結構 轉換為 數組 ,然后傳輸
    發表于 07-14 08:34

    結構共用的區別

    語言中,還有另外一種和結構非常類似的語法,叫做共用(Union),它的定義格式為:union 共用
    發表于 07-20 06:57

    C語言的結構共用在單片機中的妙用是什么

    【分享】C語言的結構共用在單片機中的妙用C語言的結構
    發表于 11-30 06:13

    怎樣去使用C語言的結構共用

    C語言的結構共用分別有何特點呢?怎樣去使用C語言的結構
    發表于 01-17 07:51

    stm32數據傳輸的相關資料分享

    簡介DMA,全稱Direct Memory Access,即直接存儲器訪問。DMA傳輸數據從一個地址空間復制到另一個地址空間,提供在外設和存儲器之間或者存儲器和存儲器之間的高速
    發表于 02-22 06:58

    數據傳輸速率是什么意思

    數據傳輸速率是什么意思 數據傳輸速率是通過信道每秒可傳輸的數字信息量的量度。數據傳輸速率也稱為吞吐率。數據傳輸速率由很
    發表于 03-18 14:45 ?4992次閱讀

    LabVIEW的串口轉WiFi數據傳輸實現方法

    在測控領域,儀器與計算機之間通常采用串口通信,串口通信是有線傳輸,存在傳輸距離短、可移動性差等缺點。本文采用
    發表于 11-17 11:20 ?4271次閱讀

    共用結構的區別

    在c++中,結構(struct)和共用(union)是兩種很相似的復合數據類型,都可以用來存儲多種
    發表于 11-19 17:46 ?3.7w次閱讀

    C語言程序設計教程之結構共用的詳細資料說明

    本文檔詳細介紹的是C語言程序設計教程之結構共用的詳細資料說明主要內容包括了:1 結構,2
    發表于 03-01 17:20 ?11次下載
    C語言程序設計教程之<b class='flag-5'>結構</b><b class='flag-5'>體</b>與<b class='flag-5'>共用</b><b class='flag-5'>體</b>的詳細資料說明

    串口數據傳輸中的共用結構如何轉換

    我們知道,浮點型float數據類型占用4個字節,實際上在內存當中a = 0x43678000,只是嵌入式芯片訪問a時,知道a是浮點型數據,所以一次性讀取4個字節,而且也按照浮點型的數據表示規定,將a
    的頭像 發表于 03-14 16:53 ?443次閱讀

    串口傳輸數據時,結構如何轉換

    嵌入式系統的串口數據傳輸都是以字節為單位,但是有些特殊的數據類型,比如浮點型float a=231.5,在內存是如何表示的呢?
    的頭像 發表于 05-19 10:52 ?751次閱讀
    <b class='flag-5'>串口傳輸</b><b class='flag-5'>數據</b>時,<b class='flag-5'>結構</b><b class='flag-5'>體</b>如何<b class='flag-5'>轉換</b>?
    主站蜘蛛池模板: 99热久久视频只有精品6| 双性被疯狂灌满精NP| 久久热最新网站获取3| 国产午夜精品片一区二区三区| 成人AV精品视频| H狠狠躁死你H| yy8090理论三级在线看| abp-146| 2022久久精品国产色蜜蜜麻豆| 在线免费视频a| 曰曰夜夜在线影院视| 在线观看永久免费网站| 东北嫖妓对白粗口| 超嫩校花被灌醉在线观看| 边摸边吃奶边做激情叫床视| japanese色系free日本| 把英语老师强奷到舒服动态图 | 麻豆AV蜜桃AV久久| 猛烈抽插H1V1| 欧美在线亚洲综合国产人| 秋霞电影院兔费理论观频84mb| 日本人HD18HD18| 丝袜美女被艹| 亚洲电影不卡| 一二三四在线高清中文版免费观看电影 | 亚洲人成网站在线观看90影院| 亚洲国产第一| 伊人久久大香线蕉综合电影网| 中国xxxxxx片免费播放| 4438全国免费观看| 把腿张开老子CAO烂你动态图 | 99国产精品久久| 成人免费视频在线观看| 国产精品久久自在自2021| 狠狠撩色姣姣综合久久| 久久在精品线影院| 欧美巨大巨粗黑人性AAAAAA| 色婷婷粉嫩AV精品综合在线| 亚洲精品6久久久久中文字幕| 孕妇bbwbbwbbwbbw超清| gratis videos欧美最新|