监测环境温度遇坑记之unsigned char char
生活随笔
收集整理的這篇文章主要介紹了
监测环境温度遇坑记之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這個函數參數對類型沒有要求,操作比較方便。
?在這里我是采用第二種辦法,因為程序中大部分類型采用char類型,修改不太便。修改之后重新測試:
總結
以上是生活随笔為你收集整理的监测环境温度遇坑记之unsigned char char的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift-ScrollView轮播图的
- 下一篇: MySQL国内镜像下载地址