Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Arduino:int的字符串得到奇怪的值_String_Int_Type Conversion_Arduino - Fatal编程技术网

String Arduino:int的字符串得到奇怪的值

String Arduino:int的字符串得到奇怪的值,string,int,type-conversion,arduino,String,Int,Type Conversion,Arduino,我想将字符串转换为int,我所能找到的就是,您必须将字符串转换为字符数组,然后将此数组转换为int,但我的代码生成奇怪的值,我无法找出问题所在 void ledDimm(String command) { // Get the Value xx from string LEDDimm=xx String substring = command.substring(8, command.length()); Serial.println("SubString:");

我想将
字符串
转换为
int
,我所能找到的就是,您必须将字符串转换为字符数组,然后将此数组转换为
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的整数,但实际的整数是2225?!我在这里做错了什么?

您需要使用函数
int value=atoi(valueArray)其中
valueArray
是以null结尾的字符串

字符串类中甚至有一个(未记录的)
toInt()
方法:

int myInt=myString.toInt()


toInt()方法在这方面非常有用,但我发现它只能转换长度为5或更少的字符串,尤其是小于65535的值,因为它是int可以接受的最大值。在这个值上,它只给出随机数(溢出值)。当你使用这个方法时,请注意这一点,因为它占用了我很多有用的时间来解决这个问题。希望能有帮助

这应该是一个评论,而不是一个答案,因为它不会回答问题。不再是未记录的: