[C++] Tableau Char/Int
Fermé
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
-
3 juin 2009 à 23:24
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 juin 2009 à 08:16
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 juin 2009 à 08:16
A voir également:
- [C++] Tableau Char/Int
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
Salut l'indien !
Ta question me désarçonne.. et pourtant je ne suis pas né de la dernière pluie.
J'aurais aimé savoir quelle était la finalité de cette opération.
En attendant, je suis au regret de te dire que ce n'est pas par un cast que tu pourras t'en sortir, et à cela il y a plusieurs raisons; tu veux faire un cast sur deux cases mémoire consécutives pour obtenir un entier:
- En mémoire tu as 2 caractères ASCII soit 0x39 en hexadécimal alors que toi tu veux obtenir 99 en décimal (soit 0x63 en hexadécimal); donc par un cast tu obtiendrait 0x3939 soit 14649 en décimal,,
- Même si cela était possible, on aurait un problème d'endian (ce n'est pas une plaisenterie), car sur nos PC, les poids faibles sont stockés avant les poids forts (place aux jeunes!)(évidemment avec 99, cela n'engendrerait pas d'erreur, mais c'est un cas particulier).
Il n'y a dont qu'une manière de s'en sortir:
entier = (case3 - '0') * 10 + (case4 - '0').
Voilà, je n'ai pas d'autres flèches à mon arc.
Bon calumet et bon scalp.
Ta question me désarçonne.. et pourtant je ne suis pas né de la dernière pluie.
J'aurais aimé savoir quelle était la finalité de cette opération.
En attendant, je suis au regret de te dire que ce n'est pas par un cast que tu pourras t'en sortir, et à cela il y a plusieurs raisons; tu veux faire un cast sur deux cases mémoire consécutives pour obtenir un entier:
- En mémoire tu as 2 caractères ASCII soit 0x39 en hexadécimal alors que toi tu veux obtenir 99 en décimal (soit 0x63 en hexadécimal); donc par un cast tu obtiendrait 0x3939 soit 14649 en décimal,,
- Même si cela était possible, on aurait un problème d'endian (ce n'est pas une plaisenterie), car sur nos PC, les poids faibles sont stockés avant les poids forts (place aux jeunes!)(évidemment avec 99, cela n'engendrerait pas d'erreur, mais c'est un cas particulier).
Il n'y a dont qu'une manière de s'en sortir:
entier = (case3 - '0') * 10 + (case4 - '0').
Voilà, je n'ai pas d'autres flèches à mon arc.
Bon calumet et bon scalp.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 juin 2009 à 08:16
4 juin 2009 à 08:16
Salut.
Pour compléter, ce que tu cherche à faire c'est une calculatrice. Mais pour cela, il faut avant tout faire un analyseur syntaxique.
Pour compléter, ce que tu cherche à faire c'est une calculatrice. Mais pour cela, il faut avant tout faire un analyseur syntaxique.