3

Stringaをに変換したいのですintが、文字列を 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 を取得することを期待していましたが、実際の int は 2225 ですか?! ここで私は何を間違えましたか?

4

3 に答える 3

10

toInt()String クラスには(文書化されていない) メソッドさえあります。

int myInt = myString.toInt();

于 2012-12-05T23:33:14.853 に答える
6

null で終了する文字列である関数int value = atoi(valueArray);whereを使用する必要があります。valueArray

于 2012-05-20T08:56:27.130 に答える
1

toInt () メソッドはこの点で非常に便利ですが、変換できるのは長さが 5 以下の文字列、特に int が取り得る最大値として 65535 未満の値のみであることがわかりました。この値を超えると、乱数 (オーバーフロー値) が返されます。この方法を使用するときは、これを理解するのに多くの時間を費やしてしまうので注意してください。それが役に立てば幸い。

于 2016-02-14T10:58:04.323 に答える