Position actuelle: Accueil> Derniers articles> La valeur de retour de la fonction bindec () en php est-elle un type entier (int) ou un type de point flottant (float)?

La valeur de retour de la fonction bindec () en php est-elle un type entier (int) ou un type de point flottant (float)?

M66 2025-06-23

Dans PHP, la fonction Bindec () est utilisée pour convertir une chaîne binaire en nombre décimal correspondant. Sa définition est très simple:

 int|float bindec(string $binary_string)

Mais de nombreux développeurs auront une question lors de l'utilisation: la fonction Bindec () renvoie-t-elle un type entier ( int ) ou un type de point flottant ( float )? La réponse à cette question n'est pas complètement intuitive, et ce qui suit est une analyse détaillée.

Utilisation de base de Bindec ()

 <?php
$binary = "1010";  // Numéro binaire,égal à décimal10
$decimal = bindec($binary);
echo $decimal;  // Sortir:10
echo gettype($decimal);  // Sortir:integer
?>

À partir de cet exemple, Bindec () renvoie un type entier.

Lorsque le numéro binaire est grand, Bindec () renvoie un numéro de point flottant

Le type entier de PHP ( INT ) a des gammes différentes sur des systèmes 32 bits et des systèmes 64 bits:

  • L'entier maximal du système 32 bits est de 2 147 483 647 (environ 2,1 milliards)

  • L'entier maximal du système 64 bits est de 9 223 372 036 854 775 807 (environ 9 000 milliards) (environ 9 000 milliards)

Si la valeur convertie de la chaîne binaire dépasse la plage entière système, PHP convertira automatiquement la valeur de retour en flotteur . En effet, le type entier de PHP a des limites de taille, tandis que les types de nombres de points flottants sont capables de représenter une plus grande gamme de nombres (mais peuvent perdre de précision).

Les exemples sont les suivants:

 <?php
// 32Le système de bits est plus grand que2147483647的Numéro binaire
$binary = "11111111111111111111111111111111";  // 32autonome1,égal4294967295,Dépasser32Gamme bit entière
$decimal = bindec($binary);
echo $decimal . "\n";  // Sortir:4294967295
echo gettype($decimal) . "\n";  // 32位系统Sortir:double (PHPmilieufloatType affiché commedouble)
?>

Sur les systèmes 32 bits, cette valeur dépasse la plage entière maximale, donc le retour est un numéro de point flottant.

Résumé spécifique

  • Lorsque le nombre décimal correspondant au nombre binaire se trouve dans la plage entière, Bindec () renvoie le type int .

  • Lorsque la valeur dépasse la plage entière, Bindec () renvoie le type de flotteur .

  • Sur les systèmes 64 bits, seuls de très grands nombres binaires retournent flotter , tandis que les systèmes 32 bits ont une plage de conversion plus petite.

Remarque supplémentaire: Bindec () ne prend pas en charge les entiers signés

Bindec () convertit simplement la chaîne binaire en nombres non signés, et il n'y a aucun concept de signes positifs et négatifs dans la chaîne binaire. Si vous devez traiter les numéros binaires signés, vous devez gérer vous-même la logique de conversion.

Reportez-vous à la documentation officielle

Pour des instructions détaillées sur Bindec () , veuillez visiter le manuel PHP .