Convertir un in en chaine de caracteres

Résolu
cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007 - 22 févr. 2007 à 15:24
cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007 - 22 févr. 2007 à 18:51
slt tlm, voila je programme un kernel en c et je renconctre un probleme :
je souhaiterai affichier le contenu de mes variables mais voila c'est interpreté comme des caracteres donc pour aboir la valeur d'un int c'est pas evident.
Je cherche donc a re programmer une fonction du type itoa, et comme la j'ai pas trop d'idée sur comment faire je cherche juste un algo pour la conversion.

6 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
22 févr. 2007 à 16:20
Voici le code du itoa de VC++ 6

void xtoa (unsigned long val, char *buf, unsigned radix, int is_neg)
{
    char *p;                /* pointer to traverse string */
    char *firstdig;         /* pointer to first digit */
    char temp;              /* temp char */
    unsigned digval;        /* value of digit */

    p = buf;

    if (is_neg) {
        *p++ = '-';
        val = (unsigned long)(-(long)val);
    }

    firstdig = p;

    do {
        digval = (unsigned) (val % radix);
        val /= radix;

        if (digval > 9)
            *p++ = (char) (digval - 10 + 'a');
        else
            *p++ = (char) (digval + '0');
    } while (val > 0);

    *p-- = '\0';

    do {
        temp = *p;
        *p = *firstdig;
        *firstdig = temp;
        --p;
        ++firstdig;
    } while (firstdig < p);
}

inline char *itoa (char *buf, int val, int radix)
{
    if (radix == 10 && val < 0) xtoa((unsigned long)val, buf, radix, 1);
    else xtoa((unsigned long)(unsigned int)val, buf, radix, 0);
    return buf;
}

C++ (@++)<!--
3
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
22 févr. 2007 à 15:32
Yop,

évidement que c'est interprete en chaine de caractères si tu les converti en chaine de caractères ;) sinon pour l'inverse tu fait avec atoi, tu peux aussi utiliser pour les convertion les sprintf ou sscanf.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007
22 févr. 2007 à 15:38
j'ai du mal m'expliqué, mon probleme est bien plus compliqué que cela :
je programme un nouveau kernel bootable, par consequent je ne dispose d'aucune lib c standard, pour afficher un caractere a l'ecran je doit m'adressée directement a la mémoire de la carte video. toutes les données que j'écrit dans cette mémoire sont interpreté comme des caracteres donc je cherche a convertir des int en chaines de caractere
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
22 févr. 2007 à 16:21
Salut !

As-tu regarder la table ascii ?
Jette y un coup d'oeil tu trouveras sûrement un petite astuce selon la valeur de chaque chaque !

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 févr. 2007 à 18:35
Programmer un kernel et ne pas savoir faire un itoa()...
Tu "fais" ton kernel par copier/coller ???

ciao...
BruNews, MVP VC++
0
cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007
22 févr. 2007 à 18:51
je sais faire un itoa() mais c'est pas aussi evident a re-programmer que d'appeler la fonction, de plus je demandais juste un algo pas un code !
mais bon je me suis débrouiller...

PS si je faisais du copié collé tu pense pas que j'en ferais aussi pour cette fonction ?
0
Rejoignez-nous