int Uart_GetIntNum(void)<br />{<br /> char str[30];<br /> char *string=str;<br /> int base=10;<br /> int minus=0;<br /> int lastIndex;<br /> int result=0;<br /> int i;<br /> <br /> Uart_GetString(string);<br /> <br /> if(string[0]=='-')<br /> {<br /> minus=1;<br /> string++;<br /> }<br /> <br /> if(string[0]=='0' && (string[1]=='x' || string[1]=='X'))<br /> {<br /> base=16;<br /> string+=2;<br /> }<br /> <br /> lastIndex=strlen(string)-1;<br /> if( string[lastIndex]=='h' || string[lastIndex]=='H' )<br /> {<br /> base=16;<br /> string[lastIndex]=0;<br /> lastIndex--;<br /> }<br /><br /> if(base==10)<br /> {<br /> result=atoi(string);<br /> result=minus ? (-1*result):result;<br /> }<br /> else<br /> {<br /> for(i=0;i<=lastIndex;i++)<br /> {<br /> if(isalpha(string))<br /> {<br /> if(isupper(string))<br /> result=(result<<4)+string-'A'+10;<br /> else<br /> result=(result<<4)+string-'a'+10;<br /> }<br /> else<br /> {<br /> result=(result<<4)+string-'0';<br /> }<br /> }<br /> result=minus ? (-1*result):result;<br /> }<br /> return result;<br />}<br /><br />就是这个程序,刚学习ARM,在超级中端上执行这个程序时result值总是输出不正确,比如输入0xa和0xA应该输出一样的值,但总是不一样。是不是程序中有问题?比如那个语句result=(result<<4)+string-'A'+10;既然result是整型数,为什么还要左移四位呢?小弟愚钝,望高手们回复指教!!!<br /> |
|