web-dev-qa-db-fra.com

Convertit un int en ASCII character

J'ai

int i = 6;

et je veux

char c = '6'

par conversion. Un moyen simple de suggérer?

EDIT: J'ai aussi besoin de générer un nombre aléatoire et de le convertir en caractères, puis d'ajouter un '.txt' et d'y accéder via un ifstream.

57
user963241

méthode simple:

char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char aChar = digits[i];

Plus sûr:

char aChar = '0' + i;

manière générique:

itoa(i, ...)

Manière pratique:

sprintf(myString, "%d", i)

façon C++: (tiré de Dave18 answer)

std::ostringstream oss;
oss << 6;

façon patronale

Joe, écris-moi un convertisseur int en caractère

façon Studboss:

char aChar = '6';

à la manière de Joe:

char aChar = '6'; // int i = 6;

à la Nasa:

// En attente de réponse du satellite ...

façon Alien: '9'

//Salutations.

à la manière de Die

Bruh j'ai construit ce

à la manière de Peter Pan:

char aChar;

switch (i)
{
  case 0:
    aChar = '0';
    break;
  case 1:
    aChar = '1';
    break;
  case 2:
    aChar = '2';
    break;
  case 3:
    aChar = '3';
    break;
  case 4:
    aChar = '4';
    break;
  case 5:
    aChar = '5';
    break;
  case 6:
    aChar = '6';
    break;
  case 7:
    aChar = '7';
    break;
  case 8:
    aChar = '8';
    break;
  case 9:
    aChar = '9';
    break;
  default:
    aChar = '?';
    break;
}

façon du Père Noël:

//Wait till Christmas!
sleep(457347347);

façon de la gravité:

//Quoi

façon '6' (Jersey) Mikes '™:

//

SO façon:

Les gars, comment éviter de lire le guide du débutant en C++?

À ma façon:

ou l'autoroute.

Commentaire: J'ai ajouté Handy way et C++ way (pour avoir une collection complète) et je l'enregistre en tant que wiki.

Edit: satisfait?

Cela ne fonctionnera que pour les chiffres int. Compris entre 0 et 9, mais votre question semble suggérer que cela pourrait suffire.

Cela fonctionne en ajoutant la valeur ASCII de char '0' au chiffre entier.

int i=6;
char c = '0'+i;  // now c is '6'

Par exemple:

'0'+0 = '0'
'0'+1 = '1'
'0'+2 = '2'
'0'+3 = '3'

Éditer

Vous ne comprenez pas ce que vous voulez dire par "travail pour les alphabets"? Si vous voulez la 5ème lettre de l'alphabet:

int i=5;
char c = 'A'-1 + i; // c is now 'E', the 5th letter.

Notez que parce que dans C/Ascii, A est considéré comme la ème lettre de l’alphabet, je fais un moins-1 pour compenser le sens normalement compris par la 5ème lettre.

Adaptez-le en fonction de votre situation spécifique.
(et test-test-test! le code que vous écrivez)

24
abelenky

Juste pour votre information, si vous voulez plus que des nombres à un chiffre, vous pouvez utiliser sprintf:

char txt[16];
int myNum = 20;
sprintf(txt, "%d", myNum);

Alors le premier chiffre est dans un caractère à txt [0], et ainsi de suite.

(Ceci est l'approche C, pas l'approche C++. La méthode C++ consisterait à utiliser des chaînes de caractères.)

10
Nathan S.

Ma façon de faire ce travail est:

    char to int
    char var;
    cout<<(int)var-48;

    int to char
    int var;
    cout<<(char)(var|48);

Et j'écris ces fonctions pour les conversions

int char2int(char *szBroj){
    int counter=0;
    int results=0;
    while(1){
        if(szBroj[counter]=='\0'){
            break;
        }else{
            results*=10;
            results+=(int)szBroj[counter]-48;
            counter++;
        }
    }
    return results;

}

char * int2char(int iNumber){
    int iNumbersCount=0;
    int iTmpNum=iNumber;
    while(iTmpNum){
        iTmpNum/=10;
        iNumbersCount++;
    }
    char *buffer=new char[iNumbersCount+1];
    for(int i=iNumbersCount-1;i>=0;i--){
        buffer[i]=(char)((iNumber%10)|48);
        iNumber/=10;
    }
    buffer[iNumbersCount]='\0';
    return buffer;

}
4

C’est ainsi que j’ai converti un nombre en ASCII. 0 bien que 9 dans le code hexadécimal soit 0x30-0x39. 6 équivaut à 0x36.

unsigned int temp = 6;
or you can use unsigned char temp = 6;
unsigned char num;
 num = 0x30| temp;

cela vous donnera la valeur ASCII pour 6. Vous faites la même chose pour 0 - 9

convertir ASCII en une valeur numérique, je suis venu avec ce code.

unsigned char num,code;
code = 0x39; // ASCII Code for 9 in Hex
num = 0&0F & code;
2
Dorato
2
Newbie

Manière alternative, mais non standard.

int i = 6;
char c[2];
char *str = NULL;
if (_itoa_s(i, c, 2, 10) == 0)
   str = c;

Ou Utilisation de la chaîne de caractères standard c ++

 std::ostringstream oss;
 oss << 6;
0
cpx

Je suppose que

std::to_string(i)

pourrait faire le travail, c'est une fonction surchargée, je pourrais être n'importe quels types numériques

0
iceSea

"J'ai int i = 6; et je veux que char c = '6' par conversion. Un moyen simple de suggérer?"

Il n'y a que 10 numéros. Donc, écrivez une fonction qui prend un int de 0 à 9 et renvoie le code ASCII. Il suffit de regarder dans une table ascii et d'écrire une fonction avec ifs ou un cas de sélection.

0
jun