代码之家  ›  专栏  ›  技术社区  ›  TheBezwet

Arduino中字符串到Int的转换

  •  0
  • TheBezwet  · 技术社区  · 7 年前

    我正在尝试在arduino中将字符串转换为int(如java中的Integer.parseInt()),以便对数字进行一些操作。不幸的是,我的解决方案都不起作用。 直到现在,我尝试:

    创建char数组并调用atoi函数:

    String StringPassword;
    
    uint8_t *hash;
    //Here I define hash
    
    int j;
    for (j = 0; j < 20; ++j) {
     StringPassword.concat(hash[j]);
    }
    
     //Checking String Size
     Serial.println("Size");
     //Checking String
     Serial.println(StringPassword.length());
    Serial.println(StringPassword);
    
    int jj;
    char PasswordCharArray[StringPassword.length()];
     StringPassword.toCharArray(PasswordCharArray, StringPassword.length());
    
    awa = atoi(PasswordCharArray);  
    Serial.println(awa);
    

    输出:

    大小 48

    168179819314217391617011617743249832108225513297

    18209

    为以null结尾的字符串创建字符数组并调用atoi函数:

     String StringPassword;
    
     uint8_t *hash;
     //Here I define hash
    
    int j;
    for (j = 0; j < 20; ++j) {
     StringPassword.concat(hash[j]);
    }
    
     //Checking String Size
     Serial.println("Size");
     //Checking String
     Serial.println(StringPassword.length());
    Serial.println(StringPassword);
    
    int jj;
    char PasswordCharArray[StringPassword.length()+1];
     StringPassword.toCharArray(PasswordCharArray,StringPassword.length()+1);
    
    awa = atoi(PasswordCharArray);  
    Serial.println(awa);
    

    输出:

    大小

    48

    168179819314217391617011617743249832108225513297

    -14511年

    使用toInt功能:

     String StringPassword;
    
      uint8_t *hash;
     //Here I define hash
    
    int j;
     for (j = 0; j < 20; ++j) {
       StringPassword.concat(hash[j]);
     }
    
     //Checking String Size
     Serial.println("Size");
     //Checking String
      Serial.println(StringPassword.length());
    Serial.println(StringPassword);
    
    awa = StringPassword.toInt();
    Serial.println(awa);
    

    输出:

    大小

    48

    168179819314217391617011617743249832108225513297

    -14511年

    将字符串更改为Int so的正确方法是什么:

    awa=168179819314217391617011617743249832108225513297?

    有人能解释一下为什么我的解决方案不起作用吗?我试图使用Stackoverflow和Arduino论坛上提到的函数来解决这个问题。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Arnev Sai    7 年前

    数字168179819314217391617011617743249832108225513297达到最大整数值限制,因此不会转换为整数。

    尝试使用 atol() 而不是 atoi() .长数字可以保存更多数据,如上图所示。