595 Stimmen

Umwandlung von char in int in C und C++

Wie konvertiere ich eine char zu einer int in C und C++?

0voto

Mathorlaz Punkte 19

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!

0voto

Riwels Punkte 766

Für char oder short to int müssen Sie nur den Wert zuweisen.

char ch = 16;
int in = ch;

Dasselbe gilt für int64.

long long lo = ch;

Alle Werte werden 16 sein.

-1voto

Narutofan Punkte 21

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;

}

-4voto

pranav suresh Punkte 73
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/ .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X