![]() |
發布時間: 2024-5-12 14:05
正文摘要:大家好,占用大家寶貴時間請指點。 主機傳送,用串口助手接收正常的。在接收端似乎是ASCII碼的hex,請教各位,如何在從機端才能分離出110這個數字在數碼管顯示出來。 傳送代碼如下: unsigned int ... |
應該是從4開始,但就取少一位。沒有搞明白是怎么回事。必須從5開始。 |
你這句不就是分離的嗎? for(i=5;i<8;i++) temp=(char)temp*10+(str[i]-30); 但是有兩個問題:一是,i應該從4開始;二是,30 是十六進制,應該用48 |
![]() ![]() |
sprintf(%d)的長度是不固定的,可能是“1”、也可能是“10”,還可能是“110”,那就要從最后的\n開始向前分離數字,直到遇到字母為止。 |
ASCII編碼而已,直接按ASCII判斷就可以了。哪怕有中文,都一樣可以分離出來。 |
數字asc碼,110三個字節。百位,十位,個位分別減0x30.百位得到值0x01再乘以100,十位得到值01再乘以10,個位得到值00。這三個字節數字的和就是可計算的值。 |
samxon 發表于 2024-5-12 16:22 ASCII好像是直接減去一個數字就變成數字了吧,好像是0x30,這樣直接拿去顯示就好了吧,不需要再整成一個變量,再分解BCD碼,多麻煩啊 |
xiaobendan001 發表于 2024-5-12 16:17 把time110后面的110變成可以計算的110,然后用數碼管顯示出來。 |
lxh2002 發表于 2024-5-12 15:58 樓主意思大概是把字符串110變成三個數字,1,1,0; |
如果數據長度是固定的,用一個數組接收數據,把time作為數據頭,找到數據頭,第五位就是你要的 |