Bonjour!
j'ai eu un drole de comportement en utilisant, a la base, la fonction modulo;
pour des raisons du au codage en interne des adresses ip, j'ai du utiliser ma
propre fonction de convertion nnombre en adresse ip :
la, avec un grand chiffre (4229839061 par exemple) j'avais un résultat faux, car
$t me retourne un chiffre négatif.
Bon, modulo ne doit fonctionner qu'avec des chiffres signé, donc je remplace
$t=$Adresse%$mod;
par
$t=($Adresse&255);
et la, ca fonctionne dans mes tests avec un chiffre en dur!
malheureusement, des que j'ai $adresse=fetch de mon adresse stockée en base
et ensuite echo number_to_ip($adresse), j'ai quelque chose de faux, meme chose
qu'avec le modulo!
donc quel peut etre le problème?????
je me suis arrangé en faisant mon modulo 256 dans la requete, mais c'est pas
top!
et de toute facon j'aimerai comprendre d'ou vient ce probleme!
alors quelqu'un a t il déja été confronté au probleme?
p.s. j'ai PHP Version 4.2.3 sous linux
--
--
alti
~~Il faut trouver le LA avant de retrouver le SI~~
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
P'tit Marcel
alti écrivit:
j'ai eu un drole de comportement en utilisant, a la base, la fonction modulo; pour des raisons du au codage en interne des adresses ip, j'ai du utiliser ma propre fonction de convertion nnombre en adresse ip :
Moi j'aurais fait ça par itération ou récusrivité et j'aurais évité de mélanger une fonction concernant des entiers (modulo) avec des fonctions impliquant des réels (pow, floor).
eça -- P'tit Marcel statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/
alti écrivit:
j'ai eu un drole de comportement en utilisant, a la base, la fonction
modulo; pour des raisons du au codage en interne des adresses ip, j'ai
du utiliser ma propre fonction de convertion nnombre en adresse ip :
Moi j'aurais fait ça par itération ou récusrivité et j'aurais évité de
mélanger une fonction concernant des entiers (modulo) avec des fonctions
impliquant des réels (pow, floor).
j'ai eu un drole de comportement en utilisant, a la base, la fonction modulo; pour des raisons du au codage en interne des adresses ip, j'ai du utiliser ma propre fonction de convertion nnombre en adresse ip :
Moi j'aurais fait ça par itération ou récusrivité et j'aurais évité de mélanger une fonction concernant des entiers (modulo) avec des fonctions impliquant des réels (pow, floor).
eça -- P'tit Marcel statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/
alti
P'tit Marcel wrote:
alti écrivit:
[.......]
Moi j'aurais fait ça par itération ou récusrivité et j'aurais évité de mélanger une fonction concernant des entiers (modulo) avec des fonctions impliquant des réels (pow, floor).
Oui, mais le probleme c'est qu'avec la version php que j'utilise, fmod n'est pas défini! donc obligé de me rabattre sur autre chose.
alti
P'tit Marcel wrote:
alti écrivit:
[.......]
Moi j'aurais fait ça par itération ou récusrivité et j'aurais évité de
mélanger une fonction concernant des entiers (modulo) avec des
fonctions impliquant des réels (pow, floor).
Moi j'aurais fait ça par itération ou récusrivité et j'aurais évité de mélanger une fonction concernant des entiers (modulo) avec des fonctions impliquant des réels (pow, floor).
Bonjour! j'ai eu un drole de comportement en utilisant, a la base, la fonction modulo; pour des raisons du au codage en interne des adresses ip, j'ai du utiliser ma propre fonction de convertion nnombre en adresse ip :
function number_to_ip($Adresse) { [...] }
la, avec un grand chiffre (4229839061 par exemple) j'avais un résultat faux, car $t me retourne un chiffre négatif.
oui effectivement $Adresse % 256 est négatif si $Adresse est négatif et pas un multiple de 256. il faudrait remplacer par
il existe une fonction long2ip qui fait le travail mais il me semble que tu travailles en petit indien.
à la limite inverser l'ordre des nombres peut être plus simple implode('.',rev(explode('.',long2ip($Adresse))));
-- Tyoup
Bonjour!
j'ai eu un drole de comportement en utilisant, a la base, la fonction modulo;
pour des raisons du au codage en interne des adresses ip, j'ai du utiliser ma
propre fonction de convertion nnombre en adresse ip :
function number_to_ip($Adresse) {
[...]
}
la, avec un grand chiffre (4229839061 par exemple) j'avais un résultat faux, car
$t me retourne un chiffre négatif.
oui effectivement $Adresse % 256 est négatif si $Adresse est négatif et
pas un multiple de 256. il faudrait remplacer par
Bonjour! j'ai eu un drole de comportement en utilisant, a la base, la fonction modulo; pour des raisons du au codage en interne des adresses ip, j'ai du utiliser ma propre fonction de convertion nnombre en adresse ip :
function number_to_ip($Adresse) { [...] }
la, avec un grand chiffre (4229839061 par exemple) j'avais un résultat faux, car $t me retourne un chiffre négatif.
oui effectivement $Adresse % 256 est négatif si $Adresse est négatif et pas un multiple de 256. il faudrait remplacer par
Effectivement, je savais qu'il y avait une mèthode avec les opérateurs sur les bits, malheureusement, ca fais partie des connaissances qui me manquent ( et y'en a beaucoup)
il existe une fonction long2ip qui fait le travail mais il me semble que tu travailles en petit indien.
à la limite inverser l'ordre des nombres peut être plus simple implode('.',rev(explode('.',long2ip($Adresse))));
Pour long2ip, je sais tres bien qu'elle existe, mais ca ne correspondait pas au codage des applis interne, de l'adresse ip. (je ne vois pas ce que tu veux dire par petit indien) Mais je n'avais pas fait l'essai avec le implode('.',array_reverse(explode('.',long2ip($Adresse)))); ce qui apparement fonctionne. En tout cas je vous remercie (tyoup et P'tit Marcel) d'avoir eclairé ma lanterne!
alti
tyoup wrote:
[....]
l'utilisation des opérateurs sur les bits est la bienvenue et est très
efficace (la division entière par 256 se fait avec $Adresse >> 8)
Effectivement, je savais qu'il y avait une mèthode avec les opérateurs sur les
bits, malheureusement, ca fais partie des connaissances qui me manquent ( et
y'en a beaucoup)
il existe une fonction long2ip qui fait le travail mais il me semble
que tu travailles en petit indien.
à la limite inverser l'ordre des nombres peut être plus simple
implode('.',rev(explode('.',long2ip($Adresse))));
Pour long2ip, je sais tres bien qu'elle existe, mais ca ne correspondait pas au
codage des applis interne, de l'adresse ip.
(je ne vois pas ce que tu veux dire par petit indien)
Mais je n'avais pas fait l'essai avec le
implode('.',array_reverse(explode('.',long2ip($Adresse))));
ce qui apparement fonctionne.
En tout cas je vous remercie (tyoup et P'tit Marcel) d'avoir eclairé ma
lanterne!
Effectivement, je savais qu'il y avait une mèthode avec les opérateurs sur les bits, malheureusement, ca fais partie des connaissances qui me manquent ( et y'en a beaucoup)
il existe une fonction long2ip qui fait le travail mais il me semble que tu travailles en petit indien.
à la limite inverser l'ordre des nombres peut être plus simple implode('.',rev(explode('.',long2ip($Adresse))));
Pour long2ip, je sais tres bien qu'elle existe, mais ca ne correspondait pas au codage des applis interne, de l'adresse ip. (je ne vois pas ce que tu veux dire par petit indien) Mais je n'avais pas fait l'essai avec le implode('.',array_reverse(explode('.',long2ip($Adresse)))); ce qui apparement fonctionne. En tout cas je vous remercie (tyoup et P'tit Marcel) d'avoir eclairé ma lanterne!