Lorsque j'effectue un appel crc32
sur un système PHP 32 bits (PHP_INT_SIZE
est 4), la valeur entière résultante peut être négative. Comment puis-je obtenir la valeur modulo correcte à partir du nombre, que je sois sur un système 32 ou 64 bits?Comment puis-je obtenir la bonne valeur modulo d'un int signé en PHP?
function checksumChar($str) {
if(PHP_INT_SIZE > 4) {
return crc32($str) % 26;
} else {
// ???
}
}
Le problème est le nombre négatif potentiel? Vous pouvez simplement appeler abs() sur le numéro crc32() et ensuite prendre le rappel. –
@AlexHG Le problème avec 'abs' est que cela donnerait des valeurs de retour différentes sur les systèmes 32 et 64 bits puisque, par exemple,' -137262718' et '4157704578' sont le même résultat pour' crc32 ("Hello") ', mais sont des nombres différents avec des modulos différents. – chiborg