STM32 在keil 下进行 atoi 函数功能测试:
源码:
void test_str2num(void)
{
int a;
printf("\r\n\r\n0x1234 = %d,",atoi("0x1234"));
printf("\r\n0x1234 = %d,",atoi("0x1234"));
printf("\r\n1234 = %d,",atoi("1234"));
printf("\r\n0 = %d,",atoi("0"));
printf("\r\n01234 = %d,",atoi("01234"));
printf("\r\n0.1234 = %d,",atoi("0.1234"));
printf("\r\n-1234 = %d,",atoi("-1234"));
printf("\r\n1234ab = %d,",atoi("1234ab"));
printf("\r\nabc1234 = %d,\r\n",atoi("abc1234"));
}
输出:
0x1234 = 0,
0x1234 = 0,
1234 = 1234,
0 = 0,
01234 = 1234,
0.1234 = 0,
-1234 = -1234,
1234ab = 1234,
abc1234 = 0,
由此可以看到 atoi 并不能将16进制的字符串转为数字,会忽略前面的若干个0,会忽略后面的若干个非数字字符。能够把负数字符串转换为数字。
也就是:它只能转换10进制字符串为数字(包括负数),其他的进制的无能为力。