par
Saian » 20 juil. 2020, 16:07
J'ai encore édité mon commentaire précédent. Le 0 c'est pas bon. C'est juste qu'en faisant une conversion bin2hex("\xa") tu obtiens 0a et donc en faisant un hex2bin('0a') tu obtiens bien la même chaine qu'avec "\xa". Mais ça fonctionne dans ce cas particulier seulement.
Pour moi le problème est que tu compares des choses différentes. Je sais pas si ça résout vraiment ton problème mais il suffit dans ce cas que tu n'utilises pas les double quotes sur la valeur de départ, ainsi tu obtiendras bien le même hash :
$string = '\xa';// \xa
hash('crc32c', $string);
$string = '\x'.dechex(10);// \xa
hash('crc32c', $string);
dechex(10) = a = \x61 qui est différent de \xa...
En revanche ce code est bon :
$string = "\x61";// a
hash('crc32c', $string);
$string = dechex(10);// a
hash('crc32c', $string);
Bref, tu ne peux comparer que ce qui est comparable et tout cela est très confus.
PS : et théoriquement étant donné que tu utilises une conversion dechex, la sortie de la fonction est donc sensée être hexadécimal et tu ne devrais donc pas ajouter de \x devant pour la convertir en hexa puisqu'elle est déjà hexa.
J'ai encore édité mon commentaire précédent. Le 0 c'est pas bon. C'est juste qu'en faisant une conversion bin2hex("\xa") tu obtiens 0a et donc en faisant un hex2bin('0a') tu obtiens bien la même chaine qu'avec "\xa". Mais ça fonctionne dans ce cas particulier seulement.
Pour moi le problème est que tu compares des choses différentes. Je sais pas si ça résout vraiment ton problème mais il suffit dans ce cas que tu n'utilises pas les double quotes sur la valeur de départ, ainsi tu obtiendras bien le même hash :
[PHP]$string = '\xa';// \xa
hash('crc32c', $string);
$string = '\x'.dechex(10);// \xa
hash('crc32c', $string);[/PHP]
dechex(10) = a = \x61 qui est différent de \xa...
En revanche ce code est bon :
[PHP]$string = "\x61";// a
hash('crc32c', $string);
$string = dechex(10);// a
hash('crc32c', $string);[/PHP]
Bref, tu ne peux comparer que ce qui est comparable et tout cela est très confus.
PS : et théoriquement étant donné que tu utilises une conversion dechex, la sortie de la fonction est donc sensée être hexadécimal et tu ne devrais donc pas ajouter de \x devant pour la convertir en hexa puisqu'elle est déjà hexa.