2010-04-07 4 views
2

Comment puis-je convertir un int en un caractère et aussi de retour de char à int?Objective-C int à char

== ABCDE 12 345 par exemple

En ce moment, je l'ai utilise un tas de déclaration de cas, je me demande s'il y a une façon plus intelligente de le faire?

Merci,
T

+4

vous demandez une conversion assez étrange. par exemple, à quoi devrait être converti 'zzz'? – Vlad

+0

ouais oublié de mentionner mais je cherche juste pour 0-9. Fondamentalement, je fais une fonctionnalité de partage sale. La valeur numérique est la réponse et si je la montre telle quelle, le plaisir est parti. Donc, juste faire quelque chose de simple pour le rendre pas si évident. Merci, Tee – teepusink

Répondre

7

Je recommande les valeurs ASCII d'utilisation et juste. Typecast

Dans la plupart des cas, il est préférable d'utiliser simplement les valeurs ASCII pour encoder les lettres; Toutefois, si vous voulez utiliser 1 2 3 4 pour représenter 'a' 'b' 'c' 'd', vous pouvez utiliser ce qui suit.

Par exemple, si vous voulez convertir la lettre 1 à « a » que vous pourriez faire:

char letter = (char) 1 + 96; 

comme ASCII 97 correspond au caractère « a ». De même, vous pouvez convertir le caractère « a » à l'entier 1 comme suit

int num = (int) 'a' - 96; 

Bien sûr, il est plus facile d'utiliser des valeurs ASCII pour commencer et éviter d'ajouter ou de soustraire, comme indiqué ci-dessus. :-D

0

Si vous voulez juste la carte 'a' -> 1, 'b' -> 2, ..., 'i' -> 9, vous devez simplement faire ce qui suit:

int convert(char* s) 
{ 
    if (!s) return -1; // error 
    int result = 0; 
    while (*s) 
    { 
     int digit = *s - 'a' + 1; 
     if (digit < 1 || digit > 9) 
      return -1; // error 
     result = 10 * result + digit; 
    } 
    return result; 
} 

Cependant, vous devez toujours vous soucier des 0 (quelle lettre voulez-vous mapper à 0?) Et du débordement (mon code ne le vérifie pas).

0
unsigned char encryPt[1]; 
encryPt[0] = (char)1;