|
發布時間: 2019-7-20 08:09
正文摘要:本帖最后由 wis98 于 2019-7-20 08:16 編輯 我將一個int變量直接賦值并在1602上顯示正常,而將兩個char數據合并為一個int數值時,在1602屏上卻顯示出3106,不知錯在那,百度了好多左移方法試驗,結果一樣。 下 ... |
znz43a 發表于 2019-7-20 09:58 謝謝大師指點俺 |
| 謝謝,我回頭再試試看 |
|
unsigned int a; unsigned char b=12; a=a+b*100; |
|
不能這樣移位,這是對應16進制的合并 0x0c(12)*256+0x22(34)=0x0c22(3106) 而i10進制合并是這樣的 12*100+34=1234 ------------------------ a=b*100+c |
|
本帖最后由 znz43a 于 2019-7-20 11:03 編輯 顯示的10進制數1234,在單片機中都是以2進制存儲的,16進制是04D2H。 而b=12中,10進制數 12 在 b中是存儲為 0CH c=34中,10進制數 34 在 b中是存儲為 22H 所以 b移位8位放入高8位,c放低8位的結果是 0C22H,轉換成10進制就是 3106 所以不能用移位,要用 bX100+c 計算 |