Bonjour,
Je voudrais convertir une ip vers un tableau de byte.
J'ai utiliser ce code :
sscanf(s[t], "%d.%d.%d.%d", srv[0],srv[1],srv[2],srv[3]);
Seulement, je me retrouve avec des int, et srv est de type byte.
Quelqu'un peu m'aider svp ?
Merci
Bonjour,
Je voudrais convertir une ip vers un tableau de byte.
J'ai utiliser ce code :
sscanf(s[t], "%d.%d.%d.%d", srv[0],srv[1],srv[2],srv[3]);
Seulement, je me retrouve avec des int, et srv est de type byte.
Quelqu'un peu m'aider svp ?
Merci
Salut,
vohu:
J'ai utiliser ce code :
sscanf(s[t], "%d.%d.%d.%d", srv[0],srv[1],srv[2],srv[3]);Seulement, je me retrouve avec des int, et srv est de type byte.
Essaye %u à la place de %d, %u permet de travailler avec des nombres non signé.
Ou essaye %02X mais je garanti rien.
Sinon tu fait un tableau de int classique puis tu affecte les valeurs dans ton tableau srv[]
ok, pb résolu, mais en fait, avec &srv[x] dans sscanf() ça fonctionne mieux
Si non, grosse question...
Dans la librairie ethernet, il y a un type IPAddress ?
Je ne comprends pas trop comment ça fonctionne (je fais que du C)
Normalement, on l'utilise comme ça :
IPAddress srv(192,168,1,1); //par exemple
Mais... comment je relis cette adresse ? comment la modifier si je voulais la changer en cours d'execution ?
je concois bien qu'il y a un constructeur. mais je suis déjà surpris de pas voir un code de la forme :
IPAddress srv = new IPAddress(192,168,1,1);
Merci
vohu:
ok, pb résolu, mais en fait, avec &srv[x] dans sscanf() ça fonctionne mieux
J'avais mĂȘme pas fait gaffe ... /facepalm
L'erreur saute aux yeux pourtant ... désolé
vohu:
Normalement, on l'utilise comme ça :
IPAddress srv(192,168,1,1); //par exempleMais... comment je relis cette adresse ? comment la modifier si je voulais la changer en cours d'execution ?
Il me semble que la classe IPAddress surcharge l'opérateur [], tu doit donc pouvoir faire srv[0] = 42 par exemple.
Par contre si c'est pour ton sscanf il te faudra d'abord stocker les valeurs dans des variables temporaires puis appeler srv[index] = ma_var1;
En réalité srv[index] appelle la fonction operator[](int index) de la classe IPAddress, ce n'est donc pas un tableau.
vohu:
je concois bien qu'il y a un constructeur. mais je suis déjà surpris de pas voir un code de la forme :
IPAddress srv = new IPAddress(192,168,1,1);
La forme avec new est une allocation dynamique.
Si tu alloue un objet statique (-> qui n'as pas besoin d'ĂȘtre crĂ©e au moment l'exĂ©cution, pour faire des tableaux de taille variable par exemple) tu utilise la forme : type nom(arguments); qui crĂ©e un objet "normal" qui sera dĂ©truit tout seul en fin de fonction / bloc.
ok ok Merci
Attention, sscanf() attend des pointeurs sur entier (donc 2 octets).
Si tu utilise un tableau de byte, tu va forcément écrire en dehors du tableau.
2 solutions :
Merci, j'ai corrigé aussi