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
27
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
366
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
27
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