Fonctions Math
PHP Manual

bindec

(PHP 4, PHP 5)

bindecConvertit de binaire en décimal

Description

number bindec ( string $binary_string )

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.

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.

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
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

Voir aussi


Fonctions Math
PHP Manual