itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
● atof():将字符串转换为双精度浮点型值。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
同时可以根据字符和数字之间的对应关系自己写函数(不调用库函数)实现字符串与数值之间的转换:
式如下:
char* dtostrf(double _val,signed char _width, unsigned char prec, char* _s)
参数说明:
_val:要转换的float或者double值。
_width:转换后整数部分长度。
_prec:转换后小数部分长度。
_s:保存到该char数组中。
示例如下:
-
float f=3.1415;
-
char c[];
-
dtostrf(f,1,2,c);
-
Serial.println(c);
此时从Arduino自带串口监视器中将输出3.14,即成功实现了数据类型转换。
数据转换之后,我们可以对字符串进行一个拼接。如下,将实现字符串的拼接
-
float f=3.1415;
-
char c[];
-
dtostrf(f,1,2,c);
-
Serial.println(c);
-
//定义一个字符串
-
char s[]="///sensor1///ly///sensor1///PM2.5///100.70///";
-
//进行字符串拼接操作
-
strcat(s,c);
-
Serial.println(s);
int -char的方法:
代码如下:
-
void setup() {
-
// put your setup code here, to run once:
-
Serial.begin(9600);
-
int number = 12;
-
char string[25];
-
itoa(number, string, 10);
-
Serial.println(string);
-
char s[] = "ababababbaabababab////";
-
strcat(s, string);
-
Serial.println(s);
-
}
-
void loop() {
-
// put your main code here, to run repeatedly:
-
}
字符'0'的ASCII码为48,然后是'1' '2' '3' ... '9'
字符' '(空格)的ASCII码为32.
字符'A'的ASCII码为65,然后是'B' 'C' ... 'Z'
字符'a'的ASCII码为97,然后是'b' 'c' ... 'z'
所以,把一个数字字符ch,转为一个整数,就是ch-'0' 当然ch-48也行
因为C和C++中,字符和整型是一样的,可以隐式转换