bindec
(PHP 4, PHP 5)
bindec — Convertit de binaire en décimal
Description
Retourne la conversion d'un nombre binaire représenté par la chaîne
binary_string
en décimal.
bindec() convertie un nombre binaire en un entier, ou, si nécessaire (pour des raisons de taille), en nombre décimal.
bindec() interprète toutes les valeurs
binary_string
comme des valeurs non-signées entières.
Ceci est dû au fait que la fonction bindec() voit
l'octet le plus significatif comme ayant plus de poids que l'octet représentant
le signe.
Liste de paramètres
-
binary_string
-
La chaîne binaire à convertir.
Ce paramètre doit être une chaîne de caractères. L'utilisation d'un autre type de données produit des résultats inattendus.
Valeurs de retour
La valeur décimale de binary_string
Historique
Version | Description |
---|---|
4.1.0 | Cette fonction peut maintenant convertir des nombres trop grand pour être contenu dans le type entier de la plate-forme ; les valeurs seront, dans ce cas, retournées sous la forme d'un nombre décimal. |
Exemples
Exemple #1 Exemple avec bindec()
<?php /* * Le plus important dans cet exemple est dans la sortie * plutôt que dans le code PHP lui-même. */ $magnitude_lower = pow(2, (PHP_INT_SIZE * 8) - 2); p($magnitude_lower - 1); p($magnitude_lower, 'Avez-vous vu le changement ? Soyez attentif la prochaine fois...'); p(PHP_INT_MAX, 'PHP_INT_MAX'); p(~PHP_INT_MAX, 'interprété comme étant supérieur à PHP_INT_MAX'); if (PHP_INT_SIZE == 4) { $note = 'interprété comme étant le plus grand entier non-signé'; } else { $note = 'interprété comme étant le plus grand entier non-signé (18446744073709551615) mais faussé par la précision de la virgule flottante'; } p(-1, $note); function p($input, $note = '') { echo "entrée : $input\n"; $format = '%0' . (PHP_INT_SIZE * 8) . 'b'; $bin = sprintf($format, $input); echo "binaire : $bin\n"; ini_set('precision', 20); // Pour plus de lisibilité sur les PC 64 bits. $dec = bindec($bin); echo 'bindec() : ' . $dec . "\n"; if ($note) { echo "Note : $note\n"; } echo "\n"; } ?>
Résultat de l'exemple ci-dessus sur une machine 32 bits :
entrée : 1073741823 binaire : 00111111111111111111111111111111 bindec() : 1073741823 entrée : 1073741824 binaire : 01000000000000000000000000000000 bindec(): 1073741824 Note : Avez-vous vu le changement ? Soyez attentif la prochaine fois... entrée : 2147483647 binaire : 01111111111111111111111111111111 bindec(): 2147483647 Note : PHP_INT_MAX entrée : -2147483648 binaire : 10000000000000000000000000000000 bindec(): 2147483648 Note : interprété comme étant supérieur à PHP_INT_MAX entrée : -1 binaire : 11111111111111111111111111111111 bindec(): 4294967295 Note : interprété comme étant le plus grand entier non-signé
Résultat de l'exemple ci-dessus sur une machine 64 bits :
entrée : 4611686018427387903 binaire : 0011111111111111111111111111111111111111111111111111111111111111 bindec() : 4611686018427387903 entrée : 4611686018427387904 binaire : 0100000000000000000000000000000000000000000000000000000000000000 bindec() : 4611686018427387904 Note : Avez-vous vu le changement ? Soyez attentif la prochaine fois... entrée : 9223372036854775807 binaire : 0111111111111111111111111111111111111111111111111111111111111111 bindec() : 9223372036854775807 Note : PHP_INT_MAX entrée : -9223372036854775808 binaire : 1000000000000000000000000000000000000000000000000000000000000000 bindec() : 9223372036854775808 Note : interprété comme étant supérieur à PHP_INT_MAX entrée : -1 binaire : 1111111111111111111111111111111111111111111111111111111111111111 bindec() : 18446744073709551616 Note : interprété comme étant le plus grand entier non-signé (18446744073709551615) mais faussé par la précision de la virgule flottante
Voir aussi
- decbin() - Convertit de décimal en binaire
- octdec() - Conversion d'octal en décimal
- hexdec() - Convertit de hexadécimal en décimal
- base_convert() - Convertit un nombre entre des bases arbitraires