当前位置: 首页> 最新文章列表> PHP 中 base_convert 函数支持哪些进制转换?最全用法教程

PHP 中 base_convert 函数支持哪些进制转换?最全用法教程

gitbox 2025-07-09

什么是 base_convert() 函数?

base_convert() 函数用于在不同的数字进制之间进行转换,它可以将一个数字从一种进制(例如二进制、十进制等)转换为另一种进制。这个函数的语法如下:

<span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$frombase</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$tobase</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>

参数说明:

  • $number: 要转换的数字,作为字符串传递。

  • $frombase: 当前数字的进制,范围是 2 到 36。

  • $tobase: 目标进制,范围同样是 2 到 36。

返回值:

返回转换后的数字,作为字符串。如果输入无效或参数错误,则返回 false


支持的进制范围

base_convert() 函数支持的进制范围是从 2 到 36。这意味着你可以在以下进制之间进行转换:

  • 二进制(Base 2):只包含 01,常用于计算机中存储数据。

  • 八进制(Base 8):由 0 到 7 的数字组成。

  • 十进制(Base 10):我们日常使用的数字系统,包含 0 到 9 的数字。

  • 十六进制(Base 16):包含 0 到 9 和 A 到 F,用于表示计算机中的数据,特别在内存地址等方面广泛使用。

  • 更高进制(Base 17 到 Base 36):超出了常见的十进制、二进制等,但在某些特殊应用中,仍然有其独特的价值。

例如,数字的字母表示(在十六进制及以上的进制中)是由 AZ 表示的,其中 A = 10, B = 11, ..., Z = 35。


使用示例

1. 从二进制到十进制

假设你有一个二进制数字 1011,你希望将它转换为十进制:

<span><span><span class="hljs-variable">$binary</span></span><span> = </span><span><span class="hljs-string">"1011"</span></span><span>;
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$binary</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decimal</span></span><span>;  </span><span><span class="hljs-comment">// 输出:11</span></span><span>
</span></span>

在这个例子中,二进制数 1011 转换为十进制数 11

2. 从十进制到十六进制

你可能会遇到需要将十进制数字转换为十六进制的情况。例如,将数字 255 转换为十六进制:

<span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-string">"255"</span></span><span>;
</span><span><span class="hljs-variable">$hexadecimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hexadecimal</span></span><span>;  </span><span><span class="hljs-comment">// 输出:FF</span></span><span>
</span></span>

这里,十进制的 255 被转换为十六进制的 FF

3. 从十六进制到八进制

你可以将十六进制数转换为八进制。例如,将 1F(十六进制)转换为八进制:

<span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-string">"1F"</span></span><span>;
</span><span><span class="hljs-variable">$octal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$hex</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$octal</span></span><span>;  </span><span><span class="hljs-comment">// 输出:37</span></span><span>
</span></span>

十六进制 1F 转换成八进制是 37

4. 从十进制到其他进制(例如 Base 35)

PHP 的 base_convert() 还允许你使用大于十六进制的进制。例如,将十进制数 100 转换为 Base 35:

<span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-string">"100"</span></span><span>;
</span><span><span class="hljs-variable">$base35</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">35</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$base35</span></span><span>;  </span><span><span class="hljs-comment">// 输出:2S</span></span><span>
</span></span>

在 Base 35 中,数字 100 对应的是 2S


注意事项

  1. 范围限制base_convert() 函数的支持进制范围是从 2 到 36。超过这个范围会导致错误。

  2. 参数类型$number 参数是字符串类型,即使输入的是数字,也需要将其转换为字符串类型传入。

  3. 大小写:在进制转换中,PHP 对字母的大小写不敏感。例如,base_convert("10", 10, 16)base_convert("10", 10, 16) 的结果是相同的。返回的结果会以大写字母形式显示,但如果输入的是小写字母,它会被自动转换。