La conversion des données est une opération très courante dans la programmation quotidienne de PHP, en particulier lorsqu'il s'agit de communications sous-jacentes, d'algorithmes de chiffrement ou d'analyse de données, qui nécessitent souvent une conversion entre binaire, hexadécimal et décimal. Cet article vous apprendra à réaliser une conversion efficace du binaire à décimal à travers deux fonctions natives PHP, hexdec () et bin2hex () .
PHP fournit la fonction Bindec () pour convertir directement les chaînes binaires en nombres décimaux. Alors pourquoi avons-nous encore besoin d'utiliser hexdec () et bin2hex () ?
La réponse est: une plus grande flexibilité et compatibilité.
Bindec () ne convient que pour les chaînes pures composées de 0 et 1 , et est sujette à des erreurs lorsqu'il s'agit de grands nombres ou de données brutes binaires telles que les flux d'octets.
Bin2Hex () et hexdec () peuvent traiter les chaînes binaires brutes, ce qui est plus stable et fiable lors de la gestion des paquets de données de bas niveau, du chiffrement ou du format de fichier analyse.
La fonction de cette fonction est de convertir une chaîne binaire (notez qu'il s'agit d'une chaîne binaire en php, pas d'une chaîne représentée par 0 et 1 ) en représentation hexadécimale:
$data = "\x0A"; // La décimale est 10 Octets
$hex = bin2hex($data);
echo $hex; // Sortir: 0a
Convertir une chaîne hexadécimale en un entier décimal:
$hex = "0a";
$decimal = hexdec($hex);
echo $decimal; // Sortir: 10
Supposons que nous lisons un flux d'octets binaires à partir d'une API ou d'un fichier sous-jacent, et nous voulons le convertir en valeur décimale. Le code est le suivant:
$binary = "\x01\x02"; // C'est deux octets: 00000001 00000010
$hex = bin2hex($binary); // Sortir: 0102
$decimal = hexdec($hex); // Sortir: 258
echo "La valeur décimale est: " . $decimal;
Le "\ x01 \ x02" ici est en fait équivalent au binaire 00000001 00000010 , et après combinaison, il est hexadécimal 0102 , qui est converti en décimal exactement 258.
Supposons que vous développez une interface qui communique avec un périphérique matériel qui vous renvoie 2 octets via une prise pour indiquer la température, et les données d'origine que vous recevez sont les suivantes:
$socketData = "\x00\x7D"; // Cela signifie hexadécimal 007D
Vous souhaitez le convertir en valeur décimale pour afficher la lecture de la température:
$hex = bin2hex($socketData); // Sortir: 007d
$temperature = hexdec($hex); // Sortir: 125
echo "La température actuelle est: " . $temperature . "°C";
Si les données que vous recevez sont codées dans Little Endian (des octets bas sont à l'avant), vous devez d'abord inverser l'ordre des octets:
$littleEndian = "\x7D\x00";
$bigEndian = strrev($littleEndian); // Transformez-vous à une grande commande finale
$decimal = hexdec(bin2hex($bigEndian)); // Correctement analysé comme 125
echo $decimal; // Sortir: 125
Bin2hex () et hexdec () sont des outils très importants pour le traitement des données binaires en PHP. Ils fonctionnent particulièrement bien dans le traitement du flux de fichiers, des protocoles sous-jacents, de l'analyse de données et d'autres scénarios. Bien que Bindec () soit plus adapté à la gestion des chaînes binaires simples, la combinaison de bin2hex () et hexdec () est sans aucun doute plus puissante et plus stable lorsqu'il est confronté à des formats de données plus complexes.
Si vous souhaitez apprendre ces techniques de traitement des données en profondeur, vous pouvez visiter:
<code> https://gitbox.net/php/hexdec-bin2hex-guide </code>
Maître ces compétences sous-jacentes pour rendre votre programmation PHP plus professionnelle et efficace!