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 计算 |