bindec
(PHP 4, PHP 5, PHP 7)
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
le premier bit comme un autre ordre de grandeur plutôt que comme le
bit de 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.
Exemples
Exemple #1 Exemple avec bindec()
<?php
echo bindec('110011') . "\n";
echo bindec('000110011') . "\n";
echo bindec('111');
?>
L'exemple ci-dessus va afficher :
51 51 7
Exemple #2 bindec() interprète l'entrée comme un entier non-signé
<?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
Notes
Note:
La fonction peut convertir des nombres qui sont trop larges pour tenir dans un type entier ; dans ce cas, ces valeurs seront retournées sous la forme de nombres à 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
Version en cache
25/11/2024 05:17:07 Cette version de la page est en cache (à la date du 25/11/2024 05:17:07) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.bindec.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.