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

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

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

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

收發(fā)通信數(shù)據(jù)時應(yīng)統(tǒng)一用unsigned char類型

冬至子 ? 來源:吾愛單片機(jī) ? 作者:echigh ? 2023-05-25 11:39 ? 次閱讀

1、統(tǒng)一用unsigned char不容易出錯。另外在VS里面,有個定義:

//在WINDEF.H中被定義

typedef unsigned char BYTE;

因此上位機(jī)有的人用BYTE類型來收發(fā)數(shù)據(jù)也行

2、我看有同事用char類型接收,語法上來說char默認(rèn)是signed char

我只能說強(qiáng)制類型轉(zhuǎn)換過程是有可能修改內(nèi)存數(shù)據(jù)的,雖然實測unsigned char轉(zhuǎn)為signed char不會修改內(nèi)存數(shù)據(jù),只是變量解析方式變了,但是這個習(xí)慣不好,比如unsigned char轉(zhuǎn)float就會修改內(nèi)存數(shù)據(jù),當(dāng)然如果用修改指針類型方式則不會修改內(nèi)存數(shù)據(jù)(修改指針類型方式的方式其實是在做內(nèi)存拷貝)。以下為驗證代碼:

unsigned char rev_buffer[8] = { 0 };
  memset(rev_buffer,0,8);


  rev_buffer[0] = 0xfe;
  printf("%2x\\r\\n", rev_buffer[0]);
  signed char sc_rev_buffer_temp[8];
  //直接拷貝內(nèi)存數(shù)據(jù)。打印signed char類型會出來4個字節(jié)是printf函數(shù)里面做的
  memcpy(sc_rev_buffer_temp, rev_buffer, 8);
  printf("%x ", sc_rev_buffer_temp[0]);
  printf("%d\\r\\n", sc_rev_buffer_temp[0]);
  //unsigned char強(qiáng)制轉(zhuǎn)換為signed char類型
  sc_rev_buffer_temp[0] = (signed char)rev_buffer[0];
  printf("%x ", sc_rev_buffer_temp[0]);
  printf("%d\\r\\n", sc_rev_buffer_temp[0]);


  float f_rev_buffer_temp;
  unsigned char uf_rev_buffer_temp[8];//輔助打印
  //直接拷貝內(nèi)存數(shù)據(jù)
  memcpy(&f_rev_buffer_temp, rev_buffer, 8);
  memcpy(uf_rev_buffer_temp, &f_rev_buffer_temp,8);
  printf("%x ", uf_rev_buffer_temp[0]);
  printf("%d\\r\\n", uf_rev_buffer_temp[0]);
  //用指針操作類型,不會修改內(nèi)存數(shù)據(jù)
  f_rev_buffer_temp = *(float*)(&rev_buffer[0]);
  memcpy(uf_rev_buffer_temp, &f_rev_buffer_temp, 8);
  printf("%x ", uf_rev_buffer_temp[0]);
  printf("%d\\r\\n", uf_rev_buffer_temp[0]);
  //用類型強(qiáng)制轉(zhuǎn)換,會修改內(nèi)存數(shù)據(jù)
  f_rev_buffer_temp = (float)(*(long long*)(&rev_buffer[0]));
  memcpy(uf_rev_buffer_temp, &f_rev_buffer_temp, 8);
  printf("%x ", uf_rev_buffer_temp[0]);
  printf("%d\\r\\n", uf_rev_buffer_temp[0]);
  getchar();

3、如果收發(fā)過程是從buffer里面memcpy拷貝數(shù)據(jù)的話(用memcpy而不是直接等于),并且后續(xù)使用也是按字節(jié)拷貝的話,那就無所謂容器的數(shù)據(jù)類型問題。因為按字節(jié)拷貝的話,容器只提供一個首地址,不會改變內(nèi)存數(shù)據(jù)

總結(jié)規(guī)范:收發(fā)數(shù)據(jù)統(tǒng)一用unsigned char類型

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

    關(guān)注

    27

    文章

    945

    瀏覽量

    54944
  • char
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    3730
  • memcpy
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2835
收藏 人收藏

    評論

    相關(guān)推薦

    想實現(xiàn)unsigned char和double的轉(zhuǎn)換,為什么DSP仿真直不對?

    請教數(shù)據(jù)類型轉(zhuǎn)換問題,處理器類型:ADSP21479,編譯器visual DSP 5.0。 想實現(xiàn)unsigned char和double的轉(zhuǎn)換(因為從外部接口接收到的是
    發(fā)表于 01-11 08:29

    char是什么數(shù)據(jù)類型

    數(shù)據(jù)代碼char
    油潑辣子
    發(fā)布于 :2023年11月16日 16:58:00

    統(tǒng)一用戶管理在校務(wù)管理系統(tǒng)中的實施

    和安全性。_ll為此中山大學(xué)在建設(shè)新代校務(wù)管理系統(tǒng)的過程中。提出了“五個統(tǒng)一”:統(tǒng)一數(shù)據(jù)庫。統(tǒng)一標(biāo)準(zhǔn)、統(tǒng)一開發(fā)平臺、
    發(fā)表于 10-10 15:22

    unsigned char code seg[] 什么意思?

    unsigned char code seg[]nusigned 是無字符char數(shù)據(jù)類型seg 是變量名code 是什么意思??我不明白unsi
    發(fā)表于 04-13 12:57

    unsigned char數(shù)據(jù)加上48卻得到了42!

    如題!今天做單片機(jī)串口傳送,結(jié)果定義的unsigned char數(shù)據(jù)加上48!然后從串口發(fā)到電腦就變成了42!這是為什么啊?
    發(fā)表于 04-04 15:22

    統(tǒng)一通信平臺和傳真的聯(lián)合增值

    時間、任何地點,都可以通過任何設(shè)備、任何網(wǎng)絡(luò),獲得數(shù)據(jù)、圖像和聲音的自由通信。也就是說,統(tǒng)一通信系統(tǒng)將語音、傳真、電子郵件、移動短消息、多媒體和數(shù)據(jù)等所有信息
    發(fā)表于 01-13 13:09

    unsigned char類型數(shù)據(jù)存入unsigned char code dis1[]中,求各位指點

    # include # include typedef unsigned char BYTE;BYTE n=8;BYTE code dis1 []=n;想達(dá)到直接寫B(tài)YTE code dis1
    發(fā)表于 07-22 10:43

    如何用串口傳輸float類型數(shù)據(jù)

    提取時,要把數(shù)據(jù)從16進(jìn)制轉(zhuǎn)到10進(jìn)制,float 轉(zhuǎn) unsigned char :在發(fā)送數(shù)據(jù)時,要把數(shù)據(jù)從10進(jìn)制轉(zhuǎn)到16進(jìn)制,再通過u
    發(fā)表于 01-19 06:12

    西普軟起動器一用備控制原理圖

    西普軟起動器一用備控制原理圖
    發(fā)表于 04-06 17:02 ?2599次閱讀
    西普軟起動器<b class='flag-5'>一用</b><b class='flag-5'>一</b>備控制原理圖

    51單片機(jī)的unsigned char code代碼定義詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)的unsigned char code代碼定義詳細(xì)說明。
    發(fā)表于 07-11 17:40 ?6次下載
    51單片機(jī)的<b class='flag-5'>unsigned</b> <b class='flag-5'>char</b> code代碼定義詳細(xì)說明

    charunsigned char在嵌入式開發(fā)中的區(qū)別

    嵌入式中數(shù)據(jù)采集的最小單位為8bit或者8bit的倍數(shù),在嵌入式中char buf[ ]指的就是字符串,也就是所謂的字符空間,轉(zhuǎn)換成ascii碼是有符號數(shù)unsigned char b
    發(fā)表于 11-03 10:06 ?9次下載
    <b class='flag-5'>char</b> 與<b class='flag-5'>unsigned</b> <b class='flag-5'>char</b>在嵌入式開發(fā)中的區(qū)別

    字符型char和整型int之間的關(guān)系

    在C語言中并沒有char類型的常量(但是在C++中卻有,字符常量都是char類型),其實是int表示c
    發(fā)表于 01-13 15:22 ?1次下載
    字符型<b class='flag-5'>char</b>和整型int之間的關(guān)系

    Char數(shù)組與String是如何從統(tǒng)一走向分離的?

    在很多編程語言中,經(jīng)常用 String 類型來表示字符串, Char 來表示字符類型
    發(fā)表于 05-19 09:49 ?270次閱讀
    <b class='flag-5'>Char</b>數(shù)組與String是如何從<b class='flag-5'>統(tǒng)一</b>走向分離的?

    SystemC中的數(shù)據(jù)類型概念

    語言的擴(kuò)展,SystemC支持所有C++的數(shù)據(jù)類型,包括long、int、short、charunsigned long、unsigned int、
    的頭像 發(fā)表于 11-02 15:44 ?1063次閱讀
    SystemC中的<b class='flag-5'>數(shù)據(jù)類型</b>概念

    char是有符號類型還是無符號類型

    個C語言的筆試題,題目很簡單,問char是有符號類型還是無符號類型
    的頭像 發(fā)表于 03-17 10:15 ?1295次閱讀
    主站蜘蛛池模板: 鬼灭之刃花街篇免费樱花动漫 | 精品免费在线视频 | 国产精品线路一线路二 | 超碰日韩人妻高清视频 | 亚洲 中文 自拍 无码 | 秋霞三级理伦免费观看 | 亚洲在线国产日韩欧美 | 男插女高潮一区二区 | 奶头从情趣内衣下露了出来AV | 尤物yw193can入口 | 成人精品视频网站 | 免费网站在线观看国产v片 免费完整版观看 | 99久久免费国产精精品 | 热久久免费频精品99热 | 2019午夜福合集不打码 | 性夜影院爽黄A爽免费动漫 性夜夜春夜夜爽AA片A | 在线亚洲视频无码天堂 | 口内射精颜射极品合集 | 恋夜秀场支持安卓版全部视频国产 | 少妇高潮A视频 | 东北小伙FREECHINESE野外 东北嫖妓对白粗口 | yellow片高清视频免费看 | japanese from色系| 久9青青cao精品视频在线 | 久cao在线香蕉 | 曰本真人00XX动太图 | 亚洲2017天堂色无码 | 么公在浴室了我的奶 | 久久性色AV亚洲电影无码 | 黄子佼81岁父亲现状曝光 | 国内精品伊人久久久影院 | 91青青草原| 国内精品久久久久影院网站 | 国偷自产AV一区二区三区健身房 | 久久精品动漫网一区二区 | 久9视频这里只有精品123 | 国产在线一区二区AV视频 | 波多结衣一区二区三区 | 5g在线视讯年龄确认海外禁止进入 | 午夜射精日本三级 | 亚洲精品不卡在线 |