Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Arduino中字符串到Int的转换_String_Arduino_Char_Int - Fatal编程技术网

String Arduino中字符串到Int的转换

String Arduino中字符串到Int的转换,string,arduino,char,int,String,Arduino,Char,Int,我试图在arduino中将字符串转换为int(如java中的Integer.parseInt()),以便对数字进行一些操作。不幸的是,我的解决方案都不起作用。 直到现在,我试着: 创建字符数组并调用atoi函数: String StringPassword; uint8_t *hash; //Here I define hash int j; for (j = 0; j < 20; ++j) { StringPassword.concat(hash[j]); } //Checki

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

创建字符数组并调用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);
 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);
StringPassword;
uint8_t*散列;
//这里我定义散列
int j;
对于(j=0;j<20;++j){
StringPassword.concat(散列[j]);
}
//检查字符串大小
序列号。打印号(“尺寸”);
//检查字符串
Serial.println(StringPassword.length());
Serial.println(StringPassword);
int jj;
char PasswordCharArray[StringPassword.length()];
toCharArray(PasswordCharArray,StringPassword.length());
awa=atoi(PasswordCharArray);
序列号:println(awa);
输出:

大小 四十八

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()];
 StringPassword.toCharArray(PasswordCharArray, StringPassword.length());

awa = atoi(PasswordCharArray);  
Serial.println(awa);
 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);
StringPassword;
uint8_t*散列;
//这里我定义散列
int j;
对于(j=0;j<20;++j){
StringPassword.concat(散列[j]);
}
//检查字符串大小
序列号。打印号(“尺寸”);
//检查字符串
Serial.println(StringPassword.length());
Serial.println(StringPassword);
int jj;
char PasswordCharArray[StringPassword.length()+1];
toCharArray(PasswordCharArray,StringPassword.length()+1);
awa=atoi(PasswordCharArray);
序列号:println(awa);
输出:

大小

四十八

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);
StringPassword;
uint8_t*散列;
//这里我定义散列
int j;
对于(j=0;j<20;++j){
StringPassword.concat(散列[j]);
}
//检查字符串大小
序列号。打印号(“尺寸”);
//检查字符串
Serial.println(StringPassword.length());
Serial.println(StringPassword);
awa=StringPassword.toInt();
序列号:println(awa);
输出:

大小

四十八

168179819314217391617011617743249832108225513297

-14511

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

awa=168179819314217391617011617743249832108225513297


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

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


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

即使是128位整数也无法保存该数字。谢谢您的回复。我试着用atol()和long来代替int,但仍然不起作用。它给了我-970930351。在最后,我需要用这个值将它的大小减少1000000%;并与服务器端(php)上生成的哈希值进行比较,并用$ReadyPassword=(int)$awa%1000000进行递归;现在,我不再使用整个散列值,而是在它的两侧取相同的部分:服务器和arduino,从中生成6位数的密码。无论如何,谢谢你的回复,否则我仍会试图找出它为什么不起作用。@TheBezwet为什么你接受这个答案?这并没有解决你的问题。你为什么要把散列转换成整数呢?我认为你有一个问题,如果你能用自己的解决方案给出一个答案并接受它,那就更有意义了。接受回答作为感谢是适得其反的。这就是投票的目的。Java也不能转换这么大的数字。