Wie konvertiere ich eine char
zu einer int
in C und C++?
Antworten
Zu viele Anzeigen?Ich hatte Probleme beim Konvertieren eines Char-Arrays wie "7c7c7d7d7d7d7c7c7c7d7d7d7d7c7c7c7c7c7c7d7d7c7c7c7c7d7c7d7d7d7c7c2e2e2e"
in seinen tatsächlichen ganzzahligen Wert, der durch "7C" als ein hexadezimaler Wert dargestellt werden kann. Nachdem ich also nach Hilfe gesucht habe, habe ich dies erstellt und dachte, es wäre cool, es zu teilen.
Dies trennt die Zeichenkette in ihre richtigen Ganzzahlen und ist vielleicht für mehr Leute als nur mich hilfreich ;)
unsigned int* char2int(char *a, int len)
{
int i,u;
unsigned int *val = malloc(len*sizeof(unsigned long));
for(i=0,u=0;i<len;i++){
if(i%2==0){
if(a[i] <= 57)
val[u] = (a[i]-50)<<4;
else
val[u] = (a[i]-55)<<4;
}
else{
if(a[i] <= 57)
val[u] += (a[i]-50);
else
val[u] += (a[i]-55);
u++;
}
}
return val;
}
Hoffentlich hilft das!
Verwenden Sie "long long" anstelle von "int", damit es für größere Zahlen funktioniert. Hier die elegante Lösung.
long long ChardToint(char *arr, size_t len){
int toptenf=1;
long long toptenLf=10000000LL;
long long makeintf=3000000000000;
makeintf= 0LL;
int holdNumberf=0;
for(int i=len-1;i>=0 ;i--){
switch(arr[i]){
case '0':
holdNumberf=0;
break;
case '1':
holdNumberf=1;
break;
case '2':
holdNumberf=2;
break;
case '3':
holdNumberf=3;
break;
case '4':
holdNumberf=4;
break;
case '5':
holdNumberf=5;
break;
case '6':
holdNumberf=6;
break;
case '7':
holdNumberf=7;
break;
case '8':
holdNumberf=8;
break;
case '9':
holdNumberf=9;
break;
default:
holdNumberf=0;
}
if(toptenf>=10000000){
makeintf=makeintf+holdNumberf*toptenLf;
toptenLf=toptenLf*10;
}else{
makeintf=makeintf+holdNumberf*toptenf;
toptenf=toptenf*10;
}
}
return makeintf;
}
int charToint(char a){
char *p = &a;
int k = atoi(p);
return k;
}
Sie können diese atoi-Methode für die Umwandlung von char in int verwenden. Weitere Informationen finden Sie in dieser http://www.cplusplus.com/reference/cstdlib/atoi/ , http://www.cplusplus.com/reference/string/stoi/ .
- See previous answers
- Weitere Antworten anzeigen