How do you convert a String to a float or int?

后端 未结 5 1576
醉酒成梦
醉酒成梦 2021-02-19 03:56

In an Arduino program I\'m working on the GPS sends the coordinates to the arduino through USB. Because of this, the incoming coordinates are stored as Strings. Is there any way

相关标签:
5条回答
  • 2021-02-19 04:27
    String stringOne, stringTwo, stringThree;
    int a;
    
    void setup() {
      // initialize serial and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
      stringOne = 12; //String("You added ");
      stringTwo = String("this string");
      stringThree = String();
      // send an intro:
      Serial.println("\n\nAdding Strings together (concatenation):");
      Serial.println();enter code here
    }
    
    void loop() {
      // adding a constant integer to a String:
      stringThree =  stringOne + 123;
      int gpslong =(stringThree.toInt());
      a=gpslong+8;
      //Serial.println(stringThree);    // prints "You added 123"
      Serial.println(a);    // prints "You added 123"
    }
    
    0 讨论(0)
  • 2021-02-19 04:29

    You can get an int from a String by just calling toInt on the String object (e.g. curLongitude.toInt()).

    If you want a float, you can use atof in conjunction with the toCharArray method:

    char floatbuf[32]; // make this at least big enough for the whole string
    curLongitude.toCharArray(floatbuf, sizeof(floatbuf));
    float f = atof(floatbuf);
    
    0 讨论(0)
  • 2021-02-19 04:42

    How about sscanf(curLongitude, "%i", &gpslong) or sscanf(curLongitude, "%f", &gpslong)? Depending on how the strings look, you might have to modify the format string, of course.

    0 讨论(0)
  • 2021-02-19 04:47

    c_str() will give you the string buffer const char* pointer.
    .
    So you can use your convertion functions:.
    int gpslong = atoi(curLongitude.c_str())
    float gpslong = atof(curLongitude.c_str())

    0 讨论(0)
  • 2021-02-19 04:48

    Convert String to Long in Arduino IDE:

        //stringToLong.h
    
        long stringToLong(String value) {
            long outLong=0;
            long inLong=1;
            int c = 0;
            int idx=value.length()-1;
            for(int i=0;i<=idx;i++){
    
                c=(int)value[idx-i];
                outLong+=inLong*(c-48);
                inLong*=10;
            }
    
            return outLong;
        }
    
    0 讨论(0)
提交回复
热议问题