我想将String
转换为int
,我能找到的就是你必须将String转换为char数组,然后将此数组转换为int
,但我的代码产生了奇怪的值,我无法弄清楚问题是什么。
void ledDimm(String command)
{
// Get the Value xx from string LEDDimm=xx
String substring = command.substring(8, command.length());
Serial.println("SubString:");
Serial.println(substring);
Serial.println("SubString Length:");
Serial.println(substring.length());
// Create a Char Array to Store the Substring for conversion
char valueArray[substring.length() + 1];
Serial.println("sizeof ValueArray");
Serial.println(sizeof(valueArray));
// Copy the substring into the array
substring.toCharArray(valueArray, sizeof(valueArray));
Serial.println("valueArray:");
Serial.println(valueArray);
// Convert char array to an int value
int value = int(valueArray);
Serial.println("Integer Value:");
Serial.println(value);
// Write the Value to the LEDPin
analogWrite(LEDPin, value);
}
串行输出如下:
Received packet of size 11
From 192.168.1.4, port 58615
Contents:
LEDDimm=100
SubString:
100
SubString Length:
3
sizeof ValueArray
4
valueArray:
100
Integer Value:
2225
我希望得到一个值为100但实际int为2225的int?我在这做错了什么?
答案 0 :(得分:11)
String类中甚至还有一个(未记录的)toInt()
方法:
int myInt = myString.toInt();
答案 1 :(得分:7)
您需要使用函数int value = atoi(valueArray);
,其中valueArray
是一个以空字符结尾的字符串。
答案 2 :(得分:1)
toInt()方法在这方面非常有用,但我发现它只能转换长度为5或更小的字符串,尤其是小于65535的值,因为它可以采用int的最大值。超过此值,它只给出随机数(溢出值)。当你使用这种方法时,请注意这一点,因为它消耗了我很多有用的时间来解决这个问题。希望能帮助到你。