Voilà mon pb est le suivant : je récupère dans une structure sockaddr
(variable sh) l'adresse IP d'un client sous la forme A.B.C.D, j'ai
alors sh.sa_data[2]=A, sh.sa_data[3]=B...
Le pb, c'est que A,B,C et D sont des unsigned char, donc si je veux
afficher leur valeur, ça marche bien entre 0 et 127, mais au-delà, ça
n'affiche pas bien...
J'ai bien essayé de convertir en int, mais ça ne marche pas...
Comment faire pour convertir un unsigned char en int ???? J'ai beau
chercher sur les forums je ne trouve rien... Quelqu'un peut-il/elle
m'aider ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yves ROMAN
Bonjour,
Voilà mon pb est le suivant : je récupère dans une structure sockaddr (variable sh) l'adresse IP d'un client sous la forme A.B.C.D, j'ai alors sh.sa_data[2]=A, sh.sa_data[3]=B...
Le pb, c'est que A,B,C et D sont des unsigned char, donc si je veux afficher leur valeur, ça marche bien entre 0 et 127, mais au-delà, ça n'affiche pas bien...
En fait, dans la structure, ce sont des char (entre -128 et 127)
struct sockaddr { u_short sa_family; /* address family */ char sa_data[14]; /* up to 14 bytes of direct address */ }; Tu veux les convertir en unsigned char : il suffit de caster printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Nota: il existe struct sockaddr_in pour faire plus facilement (?!) ce que tu veux. struct sockaddr_in * pshin = (sockaddr_in *)&sh ; printf("%u.%u.%u.%u",pshin->sin_addr.S_un.S_un_b.s_b1, ...
Bonjour,
Voilà mon pb est le suivant : je récupère dans une structure sockaddr
(variable sh) l'adresse IP d'un client sous la forme A.B.C.D, j'ai
alors sh.sa_data[2]=A, sh.sa_data[3]=B...
Le pb, c'est que A,B,C et D sont des unsigned char, donc si je veux
afficher leur valeur, ça marche bien entre 0 et 127, mais au-delà, ça
n'affiche pas bien...
En fait, dans la structure, ce sont des char (entre -128 et 127)
struct sockaddr {
u_short sa_family; /* address family */
char sa_data[14]; /* up to 14 bytes of direct address */
};
Tu veux les convertir en unsigned char : il suffit de caster
printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Nota: il existe struct sockaddr_in pour faire plus facilement (?!) ce que tu
veux.
struct sockaddr_in * pshin = (sockaddr_in *)&sh ;
printf("%u.%u.%u.%u",pshin->sin_addr.S_un.S_un_b.s_b1, ...
Voilà mon pb est le suivant : je récupère dans une structure sockaddr (variable sh) l'adresse IP d'un client sous la forme A.B.C.D, j'ai alors sh.sa_data[2]=A, sh.sa_data[3]=B...
Le pb, c'est que A,B,C et D sont des unsigned char, donc si je veux afficher leur valeur, ça marche bien entre 0 et 127, mais au-delà, ça n'affiche pas bien...
En fait, dans la structure, ce sont des char (entre -128 et 127)
struct sockaddr { u_short sa_family; /* address family */ char sa_data[14]; /* up to 14 bytes of direct address */ }; Tu veux les convertir en unsigned char : il suffit de caster printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Nota: il existe struct sockaddr_in pour faire plus facilement (?!) ce que tu veux. struct sockaddr_in * pshin = (sockaddr_in *)&sh ; printf("%u.%u.%u.%u",pshin->sin_addr.S_un.S_un_b.s_b1, ...
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Emmanuel Delahaye
In 'fr.comp.lang.c', (Philippe) wrote:
Bonjour,
Voilà mon pb est le suivant : je récupère dans une structure sockaddr (variable sh) l'adresse IP d'un client sous la forme A.B.C.D, j'ai alors sh.sa_data[2]=A, sh.sa_data[3]=B...
Le pb, c'est que A,B,C et D sont des unsigned char, donc si je veux afficher leur valeur, ça marche bien entre 0 et 127, mais au-delà, ça n'affiche pas bien...
J'ai bien essayé de convertir en int, mais ça ne marche pas...
Ce n'est pas en int qu'il faut convertir, mais en unsigned int:
unsigned char x = 234;
printf ("x = %un", (unsigned) x);
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', philippe.louboutin@netcourrier.com (Philippe) wrote:
Bonjour,
Voilà mon pb est le suivant : je récupère dans une structure sockaddr
(variable sh) l'adresse IP d'un client sous la forme A.B.C.D, j'ai
alors sh.sa_data[2]=A, sh.sa_data[3]=B...
Le pb, c'est que A,B,C et D sont des unsigned char, donc si je veux
afficher leur valeur, ça marche bien entre 0 et 127, mais au-delà, ça
n'affiche pas bien...
J'ai bien essayé de convertir en int, mais ça ne marche pas...
Ce n'est pas en int qu'il faut convertir, mais en unsigned int:
unsigned char x = 234;
printf ("x = %un", (unsigned) x);
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Voilà mon pb est le suivant : je récupère dans une structure sockaddr (variable sh) l'adresse IP d'un client sous la forme A.B.C.D, j'ai alors sh.sa_data[2]=A, sh.sa_data[3]=B...
Le pb, c'est que A,B,C et D sont des unsigned char, donc si je veux afficher leur valeur, ça marche bien entre 0 et 127, mais au-delà, ça n'affiche pas bien...
J'ai bien essayé de convertir en int, mais ça ne marche pas...
Ce n'est pas en int qu'il faut convertir, mais en unsigned int:
unsigned char x = 234;
printf ("x = %un", (unsigned) x);
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Tu veux les convertir en unsigned char : il suffit de caster printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Désolé j'avais mal posé ma question... En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce qui est fait avec la variable sh). Cependant, cette adresse est découpée en 4 parties : A,B,C et D, alors que moi je voudrais récupérer cette adresse IP dans un tableau de charactères (char IP[20] par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ? Si oui, de quelle manière dois-je m'y prendre ?
Merci pour vos réponses et @+
Yves a écrit:
Tu veux les convertir en unsigned char : il suffit de caster
printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Désolé j'avais mal posé ma question...
En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce
qui est fait avec la variable sh). Cependant, cette adresse est
découpée en 4 parties : A,B,C et D, alors que moi je voudrais
récupérer cette adresse IP dans un tableau de charactères (char IP[20]
par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du
genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ?
Si oui, de quelle manière dois-je m'y prendre ?
Tu veux les convertir en unsigned char : il suffit de caster printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Désolé j'avais mal posé ma question... En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce qui est fait avec la variable sh). Cependant, cette adresse est découpée en 4 parties : A,B,C et D, alors que moi je voudrais récupérer cette adresse IP dans un tableau de charactères (char IP[20] par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ? Si oui, de quelle manière dois-je m'y prendre ?
Merci pour vos réponses et @+
Olivier Roset
Philippe wrote:
Yves a écrit:
Tu veux les convertir en unsigned char : il suffit de caster printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Désolé j'avais mal posé ma question... En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce qui est fait avec la variable sh). Cependant, cette adresse est découpée en 4 parties : A,B,C et D, alors que moi je voudrais récupérer cette adresse IP dans un tableau de charactères (char IP[20] par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ? Si oui, de quelle manière dois-je m'y prendre ?
Effectivement, ca n'est plus le même problème. Consulte la documentation de la fonction sprintf.
Merci pour vos réponses et @+
De rien.
Philippe wrote:
Yves a écrit:
Tu veux les convertir en unsigned char : il suffit de caster
printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Désolé j'avais mal posé ma question...
En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce
qui est fait avec la variable sh). Cependant, cette adresse est
découpée en 4 parties : A,B,C et D, alors que moi je voudrais
récupérer cette adresse IP dans un tableau de charactères (char IP[20]
par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du
genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ?
Si oui, de quelle manière dois-je m'y prendre ?
Effectivement, ca n'est plus le même problème.
Consulte la documentation de la fonction sprintf.
Tu veux les convertir en unsigned char : il suffit de caster printf("%u.%u.%u.%u",(unsigned char)sh.sa_data[2],...
Désolé j'avais mal posé ma question... En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce qui est fait avec la variable sh). Cependant, cette adresse est découpée en 4 parties : A,B,C et D, alors que moi je voudrais récupérer cette adresse IP dans un tableau de charactères (char IP[20] par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ? Si oui, de quelle manière dois-je m'y prendre ?
Effectivement, ca n'est plus le même problème. Consulte la documentation de la fonction sprintf.
Merci pour vos réponses et @+
De rien.
Emmanuel Delahaye
In 'fr.comp.lang.c', (Philippe) wrote:
En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce qui est fait avec la variable sh). Cependant, cette adresse est découpée en 4 parties : A,B,C et D, alors que moi je voudrais récupérer cette adresse IP dans un tableau de charactères (char IP[20] par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ? Si oui, de quelle manière dois-je m'y prendre ?
sprintf() ou snprintf() si tu as C99 avec les formatteurs déjà indiqués...
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', philippe.louboutin@netcourrier.com (Philippe) wrote:
En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce
qui est fait avec la variable sh). Cependant, cette adresse est
découpée en 4 parties : A,B,C et D, alors que moi je voudrais
récupérer cette adresse IP dans un tableau de charactères (char IP[20]
par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du
genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ?
Si oui, de quelle manière dois-je m'y prendre ?
sprintf() ou snprintf() si tu as C99 avec les formatteurs déjà indiqués...
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
En fait mon but c'est de récupérer l'@ IP du client sur le serveur (ce qui est fait avec la variable sh). Cependant, cette adresse est découpée en 4 parties : A,B,C et D, alors que moi je voudrais récupérer cette adresse IP dans un tableau de charactères (char IP[20] par exemple) afin de pouvoir faire un fopen avec (ouvrir un fichier du genre 11.256.23.158 par exemple). Est-ce que c'est possible ou pas ? Si oui, de quelle manière dois-je m'y prendre ?
sprintf() ou snprintf() si tu as C99 avec les formatteurs déjà indiqués...
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/