我正在使用 RS232 串行通信来旋转电机。串行通信是用字符串完成的,但我需要它的十进制值。关于如何进行的任何线索。我正在用 c 语言编码。我尝试使用 atoi 函数,但它不起作用。
char *p;
int z=atoi(p);
最佳答案
使用 strtoXXX()
系列函数。如果您需要 int
、long
或 long long
或它们的无符号变体:
long l = strtol("1234567", NULL, 10);
long long ll = strtoll("1234567", NULL, 10);
unsigned long l = strtoul("1234567", NULL, 10);
如果您需要float
、double
或long double
,请使用:
float f = strtof("3.1415927", NULL);
double d = strtod("3.1415927", NULL);
关于字符串到十进制的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043377/