Rechercher une fonction PHP

bindec

(PHP 4, PHP 5, PHP 7)

bindecConvertit de binaire en décimal

Description

bindec ( string $binary_string ) : number

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

binary_string

La chaîne binaire à convertir.

Avertissement

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

La valeur décimale de binary_string

Retour à la première page de Manuel PHP  Table des matières Haut

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

Retour à la première page de Manuel PHP  Table des matières Haut

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.

Retour à la première page de Manuel PHP  Table des matières Haut

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

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-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

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

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.

Table des matières Haut