Position actuelle: Accueil> Derniers articles> Quels sont les conseils pratiques pour utiliser la fonction hexdec pour gérer les uuides ou les guides?

Quels sont les conseils pratiques pour utiliser la fonction hexdec pour gérer les uuides ou les guides?

gitbox 2025-06-11

Quelle est la fonction hexdec ?

HexDec est une fonction intégrée PHP pour convertir les cordes hexadécimales en nombres décimaux. Par exemple:

 <?php
echo hexdec('1a'); // Sortir 26
?>

Mais il convient de noter que HexDec ne peut gérer que des nombres et des personnages hexadécimaux en chaînes (0-9, AF). Si l'entrée contient des caractères non hexadécimaux (tels que les lignes horizontales courtes dans UUID - ), la chaîne doit être nettoyée en premier.


Méthode de traitement de base pour UUID en nombres

Uuid est généralement comme:

 550e8400-e29b-41d4-a716-446655440000

Lorsque nous voulons utiliser hexdec pour traiter, nous supprimons d'abord la ligne horizontale courte au milieu:

 <?php
$uuid = '550e8400-e29b-41d4-a716-446655440000';
$cleanUuid = str_replace('-', '', $uuid);
echo hexdec($cleanUuid);
?>

Remarque: Parce que l'UUID est plus long (32 caractères hexadécimaux), sa valeur décimale peut dépasser la plage de l'entier PHP, ce qui entraîne le retour HexDec seulement quelques résultats corrects.


Comment gérer les UUIds qui dépassent la gamme entière

Les entiers PHP prennent en charge jusqu'à 64 bits de longs nombres sur des systèmes 64 bits. Pour les uuides de 32 octets, les convertir directement avec Hexdec débordera souvent. Solution:

  1. Utilisez BC Math ou GMP Extension <br> Ces extensions prennent en charge les calculs numériques de toute longueur.

 <?php
$uuid = '550e8400-e29b-41d4-a716-446655440000';
$cleanUuid = str_replace('-', '', $uuid);

function bcHexDec($hex) {
    $dec = '0';
    $len = strlen($hex);
    for ($i = 0; $i < $len; $i++) {
        $current = hexdec($hex[$i]);
        $dec = bcmul($dec, '16');
        $dec = bcadd($dec, $current);
    }
    return $dec;
}

echo bcHexDec($cleanUuid);
?>
  1. Seuls certains champs d'UUID sont convertis <br> Par exemple, convertissez uniquement les 8 premiers caractères de l'UUID:

 <?php
$uuid = '550e8400-e29b-41d4-a716-446655440000';
$part = substr(str_replace('-', '', $uuid), 0, 8);
echo hexdec($part);
?>

Cela vous donne un nombre plus petit pour l'indexation ou la comparaison rapide.


Résumé des compétences pratiques

  • Nettoyez d'abord les lignes horizontales courtes de l'UUID pour vous assurer que la chaîne passée à HexDec ne contient que des caractères hexadécimaux.

  • Pour éviter d'utiliser HexDec pour convertir trop longs Uuids, il est recommandé d'utiliser BCMATH ou GMP pour implémenter une conversion de grand nombre.

  • Selon les exigences, extraire une partie de l'UUID pour la conversion et réduire la plage numérique.

  • Combinée à la conception de l'index de la base de données, les valeurs converties UUID sont utilisées pour le tri et la recherche rapide.


Conseil supplémentaire: utilisez HexDec pour obtenir l'UUID dans le paramètre URL

Si votre projet a un paramètre UUID et que vous souhaitez le convertir rapidement en traitement numérique, vous pouvez le combiner avec $ _get de PHP:

 <?php
if (isset($_GET['uuid'])) {
    $uuid = $_GET['uuid'];
    $cleanUuid = str_replace('-', '', $uuid);
    echo hexdec(substr($cleanUuid, 0, 8)); // Seulement avant la conversion8Peu
}
?>

Exemple d'accès:

 https://gitbox.net/project/page.php?uuid=550e8400-e29b-41d4-a716-446655440000