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) ... 8-|

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. :o
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) ... 8-|
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) ... 8-|
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) ... 8-|
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 :langue: