Maison > développement back-end > Problème PHP > php en hexadécimal

php en hexadécimal

王林
Libérer: 2023-05-07 14:14:08
original
866 Les gens l'ont consulté

Avec la popularisation d'Internet, nos vies sont de plus en plus étroitement liées à Internet, et divers langages de programmation jouent également un rôle important dans le développement des réseaux. Parmi eux, PHP, en tant que langage de script largement utilisé dans le développement de réseaux, est connu et utilisé par de plus en plus de développeurs. Cependant, dans le développement réel, nous devons souvent utiliser la fonction de conversion hexadécimale, et PHP lui-même ne fournit que des méthodes de conversion en décimal, hexadécimal, octal et binaire, et ne fournit pas de méthode de conversion en hexadécimal. Voyons ensuite comment PHP implémente la fonction de conversion en hexadécimal.

Avant cela, nous devons comprendre ce qu'est l'hexadécimal. La base 62 est un système de base qui convertit des nombres ou des caractères en base 62. Il se compose de chiffres et de lettres majuscules et minuscules, où 0 à 9 représente des nombres, A à Z représente des lettres majuscules et a à z représente des lettres minuscules. L'hexadécimal a été largement utilisé dans des domaines tels que les URL courtes et le stockage massif de données.

Nous pouvons implémenter la fonction de conversion de php en hexadécimal à travers les étapes suivantes :

1 Définissez les caractères contenus dans l'hexadécimal

#🎜🎜 #Tout d'abord, nous Vous devez définir le jeu de caractères inclus en hexadécimal, y compris les chiffres 0 à 9, les lettres majuscules A à Z et les lettres minuscules a à z, soit un total de 62 caractères. Vous pouvez utiliser une chaîne pour stocker ces caractères comme suit :

$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

2 Définissez la fonction de conversion

#🎜. 🎜#choisir haut Ensuite, nous devons définir une fonction qui convertit les nombres décimaux en nombres hexadécimaux. Cette fonction doit d'abord effectuer des opérations de reste et de division sur le nombre, mapper le reste au jeu de caractères à 62 chiffres pour obtenir un caractère et utiliser le quotient comme entrée suivante. Répétez ce processus jusqu'à ce que le quotient soit égal à 0 et que la chaîne finale obtenue soit une représentation hexadécimale. Le code est le suivant :

function base62_encode($number)

{

global $chars;
$base = 62;
$index = '';
do {
    $mod = $number % $base;
    $index .= $chars[$mod];
    $number = ($number - $mod) / $base;
} while ($number > 0);
return $index;
Copier après la connexion

}

Dans cet exemple, nous allons Le base est défini sur 62 et le jeu de caractères est stocké dans la variable globale $chars. Dans la boucle, effectuez d'abord les opérations de reste et de division sur le nombre, mappez le reste au jeu de caractères pour trouver le caractère correspondant et collez-le à la fin de la chaîne $index. Utilisez ensuite le quotient comme entrée suivante, continuez ce processus jusqu'à ce que le quotient soit 0 et renvoyez la chaîne finale.

3. Définissez la fonction de conversion inverse

Puisque nous devons convertir entre les nombres en base 62 et en base 10, nous devons également définir une fonction pour convertir les nombres en base 62. nombres Une fonction pour les nombres décimaux. Cette fonction doit parcourir la chaîne de droite à gauche, supprimer chaque caractère, obtenir sa position dans le jeu de caractères de base 62, la multiplier par la puissance 62 et l'ajouter au résultat. Le code est le suivant :

function base62_decode($index)

{

global $chars;
$base = 62;
$length = strlen($index);
$number = 0;
for ($i = 0; $i < $length; $i++) {
    $number += strpos($chars, $index[$i]) * pow($base, $length - $i - 1);
}
return $number;
Copier après la connexion

}

Dans cet exemple, nous allons également decode 62 Définissez la base du système sur 62 et stockez le jeu de caractères dans la variable globale $chars. Dans la boucle, nous parcourons la chaîne de droite à gauche, retirons chaque caractère, utilisons la fonction strpos pour obtenir sa position dans le jeu de caractères, puis la multiplions par la puissance de 62 et accumulons le résultat dans $number. Enfin, retournez $number.

4. Test de la fonction

Enfin, nous testons pour voir si ces deux fonctions peuvent fonctionner correctement. Nous pouvons utiliser la fonction rand pour générer un nombre décimal aléatoire, puis le convertir en base 62, puis le convertir en base 10 et enfin comparer les deux nombres pour voir s'ils sont égaux. Le code est le suivant :

$number = rand(1, 1000000);

$index = base62_encode($number);

$decode = base62_decode($index); #🎜🎜 #
echo 'numéro : ' . $numéro .
echo 'index : ' . 🎜🎜#

Exécutez le code ci-dessus, vous pouvez voir le nombre décimal généré aléatoirement, la chaîne convertie en hexadécimal et le nombre obtenu après conversion à nouveau en décimal.


Pour résumer, nous avons réalisé la fonction de conversion de nombres décimaux en nombres à 62 chiffres en définissant le jeu de caractères, la fonction de conversion et la fonction de conversion inverse et en effectuant des tests. Il convient de noter que cette conversion ne peut gérer que des entiers positifs. Si l'entrée est un nombre négatif ou 0, le résultat converti sera une chaîne vide. En développement actuel, il doit être modifié et adapté en fonction des besoins spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal