Page 1 sur 1
Comparer 2 int
Posté : 21 avr. 2011, 08:16
par luvphp
Bonjour,
Est-il possible, si oui comment, de comparer 2 integer qui sont sous forme hexadecimal ?
Par exemple :
BF15CF22 > 7fffffff
Comment faire pour que cette inégalité me renvoie true or false ?
Merci !
Re: Comparer 2 int
Posté : 21 avr. 2011, 08:24
par Mazarini
Bonjour,
$i = hexdec('EF0A');
$j = hexdec('FFFF');
echo ($i < $j);
Edit, il est possible de faire avec $a = 0x1A; pour les constantes
Re: Comparer 2 int
Posté : 21 avr. 2011, 16:28
par xTG
Ou bien :
$a = 0x12;
$b = 0xFF;
var_dump((($a - $b) > 0)?true:false); // $a > $b ?
var_dump((($b - $a) > 0)?true:false); // $b > $a ?
boolean false
boolean true
Re: Comparer 2 int
Posté : 21 avr. 2011, 20:02
par popy
C'est quoi l'intéret ?
J'aime bien le "?true:false", mais pour info les comparaisons renvoient déjà des booléens

Re: Comparer 2 int
Posté : 21 avr. 2011, 20:43
par Ryle
Juste histoire de pinailler un peu (mais c'est popy qu'à commencé

) ... Un integer ne peut pas être sous forme hexa, puisqu'un integer est numérique et que l'hexa est alphanumérique (et donc un string) ...

Re: Comparer 2 int
Posté : 21 avr. 2011, 21:24
par luvphp
Super merci à tous.
Re: Comparer 2 int
Posté : 22 avr. 2011, 08:05
par xTG
J'aime bien le "?true:false", mais pour info les comparaisons renvoient déjà des booléens

Euh oui... Un moment de béatitude on va dire.
Juste histoire de pinailler un peu (mais c'est popy qu'à commencé

) ... Un integer ne peut pas être sous forme hexa, puisqu'un integer est numérique et que l'hexa est alphanumérique (et donc un string) ...

Ce n'est que la représentation qui change. Derrière c'est bien un entier qui est codé.
Tu peux essayer de faire ceci :
$a = 0x1;
$b = "0x1";
Et là je serais d'accord avec toi car le second est bien une chaîne de caractère et non un chiffre.

Re: Comparer 2 int
Posté : 22 avr. 2011, 09:44
par popy
Juste histoire de pinailler un peu (mais c'est popy qu'à commencé

) ... Un integer ne peut pas être sous forme hexa, puisqu'un integer est numérique et que l'hexa est alphanumérique (et donc un string) ...

Le mec qui rejette la faute sur les autres... :p
Re: Comparer 2 int
Posté : 22 avr. 2011, 10:36
par Mazarini
Bonjour,
En fait ce sont toujours des chaines des caractères qui représentent des entiers. Pour retrouver l'entier, il faut connaitre la méthode de codification de la représentation. Il y a aussi des codification pour le stockage en fonction de la machine et du langage utilisé.
Re: Comparer 2 int
Posté : 22 avr. 2011, 11:54
par stealth35
Juste histoire de pinailler un peu (mais c'est popy qu'à commencé

) ... Un integer ne peut pas être sous forme hexa, puisqu'un integer est numérique et que l'hexa est alphanumérique (et donc un string) ...

echo gettype(0xff);
//integer
Re: Comparer 2 int
Posté : 22 avr. 2011, 12:14
par Ryle
@stealth35 : forcément puisque :
echo 0xff; // affiche 255 et pas 0xff
Je ne remet pas en cause l'écriture hexadécimale (propre au langage comme l'a souligné Mazarini), juste le stockage de celle-ci
Mais dans la mesure où l'on en train de partir en hors sujet, je vous propose (pour ceux qui le souhaiteraient) de poursuivre sur un autre topic dédié.
Ps : popy
