Lenteur d'un calcul

skotmarud Messages postés 116 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 26 janvier 2008 - 3 août 2005 à 21:03
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 13 nov. 2005 à 10:29
bonsoir
je suis débutant et j'ai un probleme,
j'ai codé ceci pour passer d'une ip décimal en ip "normal":

a=i/16777216;
b=(i-(a*16777216))/65536;
c=(i-((a*16777216)+(b*65536)))/256;
d=i-((a*16777216)+(b*65536)+(c*256));
sprintf(sz,"%d.%d.%d.%d",a,b,c,d);

mon probleme c'est que tout ce calcul est bcp trop long je cherche une autre solution,

* est-ce qu'on peut le simplifier ?
il y a une solution, mettre l'ip en hexadecimal et ensuite mettre chak octet du resultat en decimal séparer par un '.' (je ne sais pas le faire)
exemple :
2071690107 = 7B7B7B7B -> 123.123.123.123

* est-ce qu'il existe deja une fonction pour le faire ?

merci de votre aide !!

4 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 août 2005 à 21:11
ah oui ça c'est du VB, utilise les opérateurs de bits pour faire des décalages <<, >> et ensuite un masque 0xFF.

ciao...
BruNews, MVP VC++
0
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
10 août 2005 à 21:32
en concervant tes variables, tu peux faire :

a = ip >> 24;

b = (ip >> 16) & 255;

c = (ip >> 8) & 255;

d = ip & 255;

sprintf(sz,"%d.%d.%d.%d",a,b,c,d);

Stéph
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
13 nov. 2005 à 10:24
Deux idées je en sais pas si c'est ce que tu cherches mais

Tu peux simplifier
b= (i/65536)-256*a
c=(i/256)+256*b+65536*a

Ou tu peux éviter de faire certains calculs en gardant en mémoire des valeurs redondantes comme a*16777216 qui apparait plusieurs fois
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 10:29
Les solutions C correctes ont déjà été données plus haut, s'y référer.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0