案例 十六進制 大小端 協議


下面這個是協議, 

協議是小端模式,一共有8個字節:

 

 然后校驗和計算的是前7個字節的數據.

數據0,數據1: 兩個共同組成16位的有符號型數據.

數據2,數據3:兩個共同組成16位的有符號型數據.       

且都是小端模式,如果你用的單片機是stm32,那單片機的架構也是小端模式,就可以直接讀取和寫入.

下面是采集的一些數據:

 

如何從這些十六進制的數據中得到相應的十進制數據.

比如:上面圖片中的一條數據: DD CC 02 2E 02 20 02 FD 這里是一組數據,

然后 2E 02是兩個十六進制數據,它代表的是558

計算方法是:

 

上面的代碼是這樣的:因為讀出來的十六進制是 0x2e, 0x02

又因為協議是小端,所以, 0x02是高8位; 0x2e是低8位;

然后上面程序中 %hd 輸出的是 short 格式的.

 

關於校驗和:

某個位置: DD CC 05 1E F8 4F FD 10
某個速度: DD CC 03 95 00 00 00 41

用上面的程序 把 0x1e 0xf8 帶進去是:-2018

把0x95 0x00帶進去是得到:-107

關於校驗和,需要DD CC 05 1E F8 4F FD進行校驗和,最后應該得到的是0x10

校驗和采用的是CheckSum方法.

比如:

 

下面還有一個問題,如何把十進制,轉換成16進制的指令:

short rate=10;

str[3]=(char)(rate&0xff);

str[4]=(char)((rate>>8)&0xff)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM