Arduino中的字符串转换为Int

时间:2018-04-20 15:36:59

标签: string arduino char int

我正在尝试在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终止字符串创建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()+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

将String更改为Int的正确方法是什么:

awa = 168179819314217391617011617743249832108225513297?

有人可以向我解释为什么我的解决方案没有用吗?我试图使用Stackoverflow和Arduino论坛上提到的函数来解决这个问题。

1 个答案:

答案 0 :(得分:0)

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

尝试使用atol()代替atoi()。长数字可以容纳更多数据,如上面显示的数字。