Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment convertir un unsigned int en char* ?

15 réponses
Avatar
giova
Bonjour.
j'utilise CVI , son compilateur repose sur du C ANSI PURE !!!!

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(

ai je mal cherché , ou dois je tout me coltiner?

merci

10 réponses

1 2
Avatar
Éric Lévénez
Le 6/05/04 20:13, dans <409a8031$0$31938$, « giova »
a écrit :

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(


sprintf

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
Horst Kraemer
On Thu, 06 May 2004 20:13:31 +0200, giova wrote:

Bonjour.
j'utilise CVI , son compilateur repose sur du C ANSI PURE !!!!

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(


Si par "convertir un unsigend int en char*" tu veux dire "convertir la
valeur d'un unsigned int en chaine décimale|hexadécimale":


#include <stdlib.h>
char sd[50],sh{50];
unsigned int u345678;
sprintf(sd,"%u",u);
sprintf(sh,"%08x",u);
puts(sd);
puts(sh);

--
Horst

Avatar
giova
Horst Kraemer wrote:
On Thu, 06 May 2004 20:13:31 +0200, giova wrote:


Bonjour.
j'utilise CVI , son compilateur repose sur du C ANSI PURE !!!!

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(



Si par "convertir un unsigend int en char*" tu veux dire "convertir la
valeur d'un unsigned int en chaine décimale|hexadécimale":


#include <stdlib.h>
char sd[50],sh{50];
unsigned int u345678;
sprintf(sd,"%u",u);
sprintf(sh,"%08x",u);
puts(sd);
puts(sh);

non je veux que 4244897280 (qui si depasse la capacité d'un int signé)

me donne "4244897280"


Avatar
giova
Éric Lévénez wrote:

Le 6/05/04 20:13, dans <409a8031$0$31938$, « giova »


j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(



sprintf

merci mais je ne cherche pas a afficher un int mais le convertir en

char* la nuance est de taille.


Avatar
Régis Troadec
"giova" a écrit dans le message de
news:409a8ed1$0$20757$
Horst Kraemer wrote:
On Thu, 06 May 2004 20:13:31 +0200, giova wrote:


Bonjour.
j'utilise CVI , son compilateur repose sur du C ANSI PURE !!!!

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(



Si par "convertir un unsigend int en char*" tu veux dire "convertir la
valeur d'un unsigned int en chaine décimale|hexadécimale":


#include <stdlib.h>
char sd[50],sh{50];
unsigned int u345678;
sprintf(sd,"%u",u);
sprintf(sh,"%08x",u);
puts(sd);
puts(sh);

non je veux que 4244897280 (qui si depasse la capacité d'un int signé)

me donne "4244897280"


C'est bien ce que Horst a proposé.

Là, je ne comprends pas, si ca dépasse un int signé, quelle valeur
comptes-tu récupérer ? Pour un entier non signé, le dépassement est géré
modulo la valeur maximum que peut prendre l'entier non signé, mais si ce
n'est pas signé, ce n'est pas défini par la norme, peut-etre par ton
implémentation.

Regis



Avatar
Régis Troadec
"giova" a écrit dans le message de
news:409a8f84$0$20757$
Éric Lévénez wrote:

Le 6/05/04 20:13, dans <409a8031$0$31938$, «
giova »




j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(



sprintf

merci mais je ne cherche pas a afficher un int mais le convertir en

char* la nuance est de taille.


int main(void)
{
/* Pas defini par la norme */
/* A tes risques et perils... */
/* Bien lire la doc de son compilo, etc, etc... */
int adr = 2345187;
char * p = (char*)adr;

return 0;
}

Regis



Avatar
Régis Troadec
Là, je ne comprends pas, si ca dépasse un int signé, quelle valeur
comptes-tu récupérer ? Pour un entier non signé, le dépassement est géré
modulo la valeur maximum que peut prendre l'entier non signé, mais si ce
n'est pas signé, ce n'est pas défini par la norme, peut-etre par ton
implementation.

^^^^^
Fallait lire "...si cet entier EST signé"

Avatar
Éric Lévénez
Le 6/05/04 21:18, dans <409a8f84$0$20757$, « giova »
a écrit :

Éric Lévénez wrote:

Le 6/05/04 20:13, dans <409a8031$0$31938$, « giova »

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(


sprintf

merci mais je ne cherche pas a afficher un int mais le convertir en

char* la nuance est de taille.


char * est un pointeur, int est un entier. Rien à voir. C'est pourquoi je
t'ai indiqué la méthode pour convertir un nombre en chaîne. Si ce n'est pas
cela ce que tu veux faire, explique clairement ton problème.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.



Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', giova wrote:

j'utilise CVI , son compilateur repose sur du C ANSI PURE !!!!

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(


Tu connais printf(). Il existe une version 'mémoire' qui s'appelle sprintf(),
et, sur les compilateurs C99, une version plus sûre qui s'appelle snprintf().


--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', giova wrote:

j'ai eu beau fouiller de fond en large, j'ai bien trouvé les fonctions
pour convertir de char* en int (via stdlib.h) mais pas l'inverse :(


sprintf

merci mais je ne cherche pas a afficher un int mais le convertir en

char* la nuance est de taille.


Hum. J'ai cru comprendre que tu voulais convertir une valeur numérique en
chaine de caractères. Dans ce cas, c'est bien sprintf(). Si tu veux faire
autre chose, sois plus précis.

--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/



1 2