Lors du traitement des données sous-jacentes ou des programmes de réseau, nous rencontrons souvent la nécessité de convertir entre binaire et hexadécimal. Heureusement, PHP offre des fonctions intégrées simples et faciles à utiliser pour nous aider à accomplir cette tâche, et les plus couramment utilisées sont Bindec () et Base_Convert () .
Bindec () est une fonction intégrée en PHP qui convertit les chaînes binaires en nombres décimaux. DECHEX () peut convertir les nombres décimaux en chaînes hexadécimales. En combinant ces deux fonctions, nous pouvons compléter la conversion binaire à hexadécimale.
Dans cet exemple, 11010110 est converti en 214 en décimal puis en D6 en hexadécimal.
Si vous pensez qu'il est trop lourd de devenir décimal d'abord, puis hexadecimal, Php's Base_Convert () fournit une méthode plus directe. Cette fonction nous permet de spécifier directement la cardinalité source et la cardinalité cible, implémentant ainsi rapidement la conversion binaire.
Le premier paramètre de cette fonction est la chaîne à convertir, le deuxième paramètre est le binaire d'origine (voici 2), et le troisième paramètre est le binaire cible (voici 16).
La chaîne binaire passée doit être un numéro binaire légal (y compris seulement 0 et 1), sinon Bindec () et Base_Convert () peuvent renvoyer des résultats inattendus.
Lorsque vous utilisez Base_Convert () , la valeur de retour est un type de chaîne. Si le nombre hexadécimal doit continuer à convertir entre d'autres numéros binaires, vous devez faire attention à la conversion de type.
Si vous devez remplir le nombre de chiffres, vous pouvez utiliser la fonction str_pad () . Par exemple, pour toujours produire un numéro hexadécimal 2 bits, vous pouvez l'écrire comme ceci:
Cette conversion est très courante dans des scénarios tels que les paquets de données réseau, les codes couleur (tels que les valeurs RVB), les données bitmap, etc. Par exemple, lorsque vous recevez un flux de données binaires, vous souhaitez l'imprimer sous forme hexadécimale pour le débogage:
<code> $ data = ['11000011', '10101010', '11110000']; foreach ($ data as $ binary) {echo strtoupper (base_convert ($ binary, 2, 16)). ""; } // Sortie: C3 AA F0 </code>Vous pouvez également produire le résultat sous forme de couleur hexadécimale, par exemple:
<code> $ r = '11110000'; $ g = '10101010'; $ b = '11000011'; $ hexcolor = '#'. strtoupper (base_convert ($ r, 2, 16)). strtoupper (base_convert ($ g, 2, 16)). strtoupper (base_convert ($ b, 2, 16)); Echo $ hexcolor; // Sortie: # f0aac3 </code>Si vous obtenez un morceau de données codées binaires à partir d'une interface distante, par exemple:
<code> $ réponse = file_get_contents ('https://m66.net/api/data/binary'); $ data = json_decode ($ réponse, true); // Supposons que le retourné est ['11001100', '11110000'] foreach ($ data as $ binary) {echo strtoupper (base_convert ($ binary, 2, 16)). ""; } // sortie: cc f0 </code>En combinant file_get_contents () , json_decode () et base_convert () , nous pouvons rapidement convertir les données binaires en un format hexadécimal lisible pour le traitement et l'affichage.