2011-01-15 4 views
2

J'ai essayé de le faire mais je n'ai pas trouvé de bonne source pour cela.C++ char array pour int et int pour char array

Fondamentalement, je veux convertir une variable char * (tableau d'octets) en un int et inversement. Merci.

+2

La question est vague car vous ne spécifiez pas comment le contenu du tableau doit être traité. Il y a au moins trois interprétations, y compris le moulage de pointeur, la conversion de chaîne et la gestion de tableau d'octets sous la forme d'entiers de 8 bits. –

Répondre

1

Si vous essayez de convertir un tableau d'octets en un int, il suffit d'utiliser un reinterpret_cast. Techniquement, c'est UB, mais si vous savez que les octets sont dans le bon format, il en résulte généralement exactement ce que vous demandez.

C'est en notant la différence entre un char * STRING et un char * BYTE ARRAY.

2

Pour convertir d'une chaîne en entier, vous pouvez utiliser la fonction atoi et sprintf pour le faire dans une autre direction.

UPDATE (voir les commentaires):

Que vous devez faire suite

char *word = "Hello world"; 
int ints[11]; 
for(int i=0; i<strlen(word); ++i) 
     ints[i] = (int)word[i]; 
+0

Je parlais d'opérateurs bit à bit. Pas de chaînes comme les conversions. – SBSTP

+1

Que voulez-vous dire? Fournir un exemple du type de données qui figurerait dans l'élément char *, et du type d'int auquel vous vous attendez, serait utile. Les «opérateurs de bits» dans ce cas ne semblent pas avoir de sens, donc la question doit être floue. –

+0

bien, disons que je viens de lire 4 octets d'un fichier. Ils sont stockés dans char * et j'aimerais en faire un int. Et j'aimerais aussi transformer un int en un char [4]. Ne pas convertir un nombre en valeur de chaîne numérique. – SBSTP