一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

串口數(shù)據(jù)傳輸中的共用體和結(jié)構(gòu)體如何轉(zhuǎn)換?

h1654155149.6853 ? 來(lái)源:電子工程世界 ? 2023-03-14 16:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們知道,浮點(diǎn)型float數(shù)據(jù)類(lèi)型占用4個(gè)字節(jié),實(shí)際上在內(nèi)存當(dāng)中a = 0x43678000,只是嵌入式芯片訪問(wèn)a時(shí),知道a是浮點(diǎn)型數(shù)據(jù),所以一次性讀取4個(gè)字節(jié),而且也按照浮點(diǎn)型的數(shù)據(jù)表示規(guī)定,將a轉(zhuǎn)換為十進(jìn)制的可讀數(shù)據(jù)231.5。

如果我們從串口接收到4個(gè)字節(jié)數(shù)據(jù){0x43,0x67,0x80,0x00},如何把這4個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)換為float型呢?

直接令float a = 0x43678000這是不行的(不信的讀者可以自行驗(yàn)證),這就是串口通訊當(dāng)中經(jīng)常遇到的問(wèn)題,如果數(shù)據(jù)傳輸中包括了浮點(diǎn)型數(shù)據(jù),在這里我們可以通過(guò)共用體或者結(jié)構(gòu)體來(lái)解決。

對(duì)于共用體:

354554a4-c23a-11ed-bfe3-dac502259ad0.png

f 的4個(gè)字節(jié)和s[4]的4個(gè)字節(jié)是共用一個(gè)區(qū)域,如果我們令f = 231.5,然后通過(guò)監(jiān)視窗查看s[4]的數(shù)值,下面是測(cè)試程序:

3569ed6e-c23a-11ed-bfe3-dac502259ad0.png

監(jiān)視結(jié)果如下所示:

357e1ff0-c23a-11ed-bfe3-dac502259ad0.png

我們同樣適用結(jié)構(gòu)體做了相同的實(shí)驗(yàn),將數(shù)組s[4]={0x00,0x80,0x67,0x43}的首地址s[0]強(qiáng)制轉(zhuǎn)換賦值給結(jié)構(gòu)體z,最后打印輸出的結(jié)果也是231.5這里我們看到原本應(yīng)該是0x4367_8000的數(shù)據(jù)實(shí)際存儲(chǔ)的時(shí)候變成了00H 80H 67H 43H,這是因?yàn)橛?jì)算機(jī)系統(tǒng)使用了小端存儲(chǔ)。

什么是小端存儲(chǔ)呢?

我們都知道,對(duì)于一個(gè)超過(guò)一個(gè)字節(jié)的數(shù)據(jù),其在計(jì)算機(jī)中的存儲(chǔ)需要跨越字節(jié)。某些機(jī)器選擇在存儲(chǔ)器中按照從最低為有效字節(jié)到最高有效字節(jié)的順序存儲(chǔ)對(duì)象,而另一些機(jī)器則按照從最高為有效字節(jié)到到最低為有效字節(jié)的順序存儲(chǔ),前一種存儲(chǔ)方式被稱(chēng)為小端存儲(chǔ),后一種方式被稱(chēng)為大端存儲(chǔ)。

舉個(gè)例子,對(duì)于十六進(jìn)制數(shù)0x01234567,其字節(jié)的存儲(chǔ)順序便依賴(lài)于機(jī)器,如下:

35c22de4-c23a-11ed-bfe3-dac502259ad0.png

我們可以通過(guò)下面的函數(shù)測(cè)試是大端存儲(chǔ)還是小端存儲(chǔ):

35d7fb24-c23a-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

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

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317553
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    2019

    瀏覽量

    66070
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3125

    瀏覽量

    75269
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1588

    瀏覽量

    79940
  • 結(jié)構(gòu)體
    +關(guān)注

    關(guān)注

    1

    文章

    131

    瀏覽量

    11115

原文標(biāo)題:干貨 | 串口數(shù)據(jù)傳輸中的共用體和結(jié)構(gòu)體如何轉(zhuǎn)換?

文章出處:【微信號(hào):電子工程世界,微信公眾號(hào):電子工程世界】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語(yǔ)言-枚舉、共用

    前面章節(jié)學(xué)習(xí)了結(jié)構(gòu)結(jié)構(gòu)里可以按順序存放相同或者不同的數(shù)據(jù)類(lèi)型,每個(gè)成員都有它對(duì)應(yīng)的存儲(chǔ)空間。 而
    的頭像 發(fā)表于 09-09 11:31 ?1267次閱讀

    socket 傳輸結(jié)構(gòu) 省去字符與數(shù)據(jù)轉(zhuǎn)換

    socket通訊send函數(shù)直接傳送的是字符串為了避免客戶(hù)端和服務(wù)器斷的數(shù)據(jù)格式轉(zhuǎn)換,使用結(jié)構(gòu)傳輸
    發(fā)表于 09-25 16:58

    結(jié)構(gòu)-共用和用戶(hù)定義類(lèi)型

    結(jié)構(gòu)-共用和用戶(hù)定義類(lèi)型
    發(fā)表于 01-31 10:48

    模擬數(shù)字轉(zhuǎn)換數(shù)據(jù)傳輸

    的穩(wěn)定性,令數(shù)據(jù)傳輸出現(xiàn)誤碼??朔@些問(wèn)題的其中一個(gè)辦法是采用低電壓差分信號(hào) (LVDS) 數(shù)據(jù)總線。圖 1 是其中一種模擬/數(shù)字轉(zhuǎn)換器的結(jié)構(gòu)框圖,帶有LVDS 輸出信號(hào),驅(qū)動(dòng)專(zhuān)用集成
    發(fā)表于 07-12 06:18

    串口傳輸結(jié)構(gòu)是什么意思

    串口傳輸 結(jié)構(gòu)就是 把結(jié)構(gòu) 轉(zhuǎn)換為 數(shù)組 ,然后傳輸
    發(fā)表于 07-14 08:34

    結(jié)構(gòu)共用的區(qū)別

    轉(zhuǎn)載重點(diǎn):共用的所有成員占用同一段內(nèi)存,修改一個(gè)成員會(huì)影響其余所有成員。圖形分析影響過(guò)程通過(guò)前面的講解,我們知道結(jié)構(gòu)(Struct)是一種構(gòu)造類(lèi)型或復(fù)雜類(lèi)型,它可以包含多個(gè)類(lèi)型不同
    發(fā)表于 07-20 06:57

    C語(yǔ)言的結(jié)構(gòu)共用在單片機(jī)的妙用是什么

    【分享】C語(yǔ)言的結(jié)構(gòu)共用在單片機(jī)的妙用C語(yǔ)言的結(jié)構(gòu)
    發(fā)表于 11-30 06:13

    怎樣去使用C語(yǔ)言的結(jié)構(gòu)共用

    C語(yǔ)言的結(jié)構(gòu)共用分別有何特點(diǎn)呢?怎樣去使用C語(yǔ)言的結(jié)構(gòu)
    發(fā)表于 01-17 07:51

    stm32數(shù)據(jù)傳輸的相關(guān)資料分享

    簡(jiǎn)介DMA,全稱(chēng)Direct Memory Access,即直接存儲(chǔ)器訪問(wèn)。DMA傳輸數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間,提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。它的作用
    發(fā)表于 02-22 06:58

    數(shù)據(jù)傳輸的成幀

    什么是數(shù)據(jù)傳輸的成幀 數(shù)據(jù)傳輸的成幀 成幀技術(shù)是一種用來(lái)在一個(gè)比特流內(nèi)分配或標(biāo)記信道的技術(shù),為電信提供選擇基本的時(shí)隙結(jié)構(gòu)和管理方式、
    發(fā)表于 03-18 14:46 ?3826次閱讀

    McBSP技術(shù)在數(shù)據(jù)傳輸的應(yīng)用

    在嵌入式數(shù)據(jù)傳輸系統(tǒng)中經(jīng)常會(huì)遇到DSP芯片與模/數(shù)轉(zhuǎn)換器接口的問(wèn)題,為提高信號(hào)的采樣、傳輸速度與精度,增強(qiáng)系統(tǒng)可靠性,給出了基于DSP芯片的多通道緩沖串口(McBSP)在
    發(fā)表于 05-03 18:05 ?34次下載

    共用結(jié)構(gòu)的區(qū)別

    在c++,結(jié)構(gòu)(struct)和共用(union)是兩種很相似的復(fù)合數(shù)據(jù)類(lèi)型,都可以用來(lái)存
    發(fā)表于 11-19 17:46 ?3.8w次閱讀

    C語(yǔ)言的結(jié)構(gòu)共用在單片機(jī)的妙用

    【分享】C語(yǔ)言的結(jié)構(gòu)共用在單片機(jī)的妙用C語(yǔ)言的結(jié)構(gòu)
    發(fā)表于 11-20 19:36 ?20次下載
    C語(yǔ)言的<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>和<b class='flag-5'>共用</b><b class='flag-5'>體</b>在單片機(jī)<b class='flag-5'>中</b>的妙用

    串口傳輸數(shù)據(jù)時(shí),結(jié)構(gòu)如何轉(zhuǎn)換?

    嵌入式系統(tǒng)的串口數(shù)據(jù)傳輸都是以字節(jié)為單位,但是有些特殊的數(shù)據(jù)類(lèi)型,比如浮點(diǎn)型float a=231.5,在內(nèi)存是如何表示的呢?
    的頭像 發(fā)表于 05-19 10:52 ?951次閱讀
    <b class='flag-5'>串口傳輸</b><b class='flag-5'>數(shù)據(jù)</b>時(shí),<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>如何<b class='flag-5'>轉(zhuǎn)換</b>?

    串口數(shù)據(jù)傳輸共用結(jié)構(gòu)之間的轉(zhuǎn)換技巧

    如果我們從串口接收到4個(gè)字節(jié)數(shù)據(jù){0x43,0x67,0x80,0x00},如何把這4個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)換為float型呢?
    的頭像 發(fā)表于 03-22 12:28 ?1019次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>數(shù)據(jù)傳輸</b><b class='flag-5'>共用</b><b class='flag-5'>體</b>與<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>之間的<b class='flag-5'>轉(zhuǎn)換</b>技巧