PHP decbin() 函数

定义和用法

decbin() 函数将十进制数转换为二进制字符串。

提示:如需将二进制转换为十进制,请使用 bindec() 函数。

语法

decbin(int $num): string
参数 描述
num 必需。规定要转换的十进制整数。
由于 PHP int 类型是有符号的,负数会按 32 位或 64 位二进制补码处理,取决于平台。

返回值

返回包含十进制数 num 的二进制表示的字符串。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+

示例

示例 1:基本用法

<?php
echo decbin(12) . "<br>";    // 1100
echo decbin(5) . "<br>";     // 101
echo decbin(0) . "<br>";     // 0
?>

输出:

1100
101
0

示例 2:处理大数

<?php
$large_num = 2147483647; // 32位最大正整数
echo "32位最大整数: " . $large_num . "<br>";
echo "二进制: " . decbin($large_num) . "<br>";

// 在64位系统上可以处理更大数值
if (PHP_INT_SIZE == 8) {
    $very_large = 9223372036854775807; // 64位最大整数
    echo "64位最大整数: " . $very_large . "<br>";
    echo "二进制: " . decbin($very_large) . "<br>";
}
?>

输出(64位系统):

32位最大整数: 2147483647
二进制: 1111111111111111111111111111111
64位最大整数: 9223372036854775807
二进制: 111111111111111111111111111111111111111111111111111111111111111

示例 3:实际应用 - 权限位表示

<php
// 使用二进制位来表示权限
define('PERM_READ', 1);   // 0001
define('PERM_WRITE', 2);  // 0010
define('PERM_EXEC', 4);   // 0100

$user_perms = PERM_READ | PERM_WRITE; // 0011 (3)
$group_perms = PERM_READ;             // 0001 (1)
$other_perms = PERM_EXEC;             // 0100 (4)

echo "用户权限 (3): " . str_pad(decbin($user_perms), 4, '0', STR_PAD_LEFT) . "<br>";
echo "组权限 (1): " . str_pad(decbin($group_perms), 4, '0', STR_PAD_LEFT) . "<br>";
echo "其他权限 (4): " . str_pad(decbin($other_perms), 4, '0', STR_PAD_LEFT);
?>

输出:

用户权限 (3): 0011
组权限 (1): 0001
其他权限 (4): 0100

相关函数

注意事项

重要:
  • decbin() 处理负数时返回的是 32 位或 64 位二进制补码表示,具体取决于 PHP 整数大小。
  • 如果数字超出整数范围(对于 32 位系统,超过 2147483647),结果将不可靠。
  • 返回值是字符串类型,避免前导零丢失的问题。
  • 对于很大的整数,可以使用 base_convert()gmp_strval(gmp_init($num, 10), 2)(需要 GMP 扩展)。