日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

监测环境温度遇坑记之unsigned char char

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 监测环境温度遇坑记之unsigned char char 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


?在項目測試階段呢,前一篇文章已經成功接收到了數據,但是對接收到的數據不是很滿意??蛻舳税l送的報文頭是0xfd 0xfd,報文尾是0xdf 0xdf ,但是服務器端接收到的報頭報尾卻是0xfffffffd 0xfffffffd 0xffffffdf 0xffffffdf,原因是自動對高位進行了擴展。于是百度上一頓查找,最終發現原因是沒有正確使用unsigned char 和 char這兩種數據類型。

?在c語言中char 默認的是signed char類型,有符號的字符型,最高位表示符號位,其取值范圍是-128~127,unsigned char 是無符號類型,最高位不表示符號位,其取值范圍是0~255。對于計算機而言,unsiged cha 和 char 沒有什么區別,但是通過%x格式打印到終端的時候會對最高位進行位擴展,讓我以為兩端接收到的數據不一致,為了打印出來一致,有兩種解決辦法。

  • 將客戶端的數據包char 類型改為unsigned char類型。
  • 將接收到的數據使用memcpy內存拷貝到unsigned char型內存里面。memcpy這個函數參數對類型沒有要求,操作比較方便。
void *memcpy(void *dest, const void *src, size_t n);

?在這里我是采用第二種辦法,因為程序中大部分類型采用char類型,修改不太便。修改之后重新測試:

總結

以上是生活随笔為你收集整理的监测环境温度遇坑记之unsigned char char的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。