我正在尝试在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论坛上提到的函数来解决这个问题。
答案 0 :(得分:0)
数字168179819314217391617011617743249832108225513297达到最大整数限制,因此不会转换为整数。
尝试使用atol()
代替atoi()
。长数字可以容纳更多数据,如上面显示的数字。