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):只包含 0 和 1,常用于计算机中存储数据。
八进制(Base 8):由 0 到 7 的数字组成。
十进制(Base 10):我们日常使用的数字系统,包含 0 到 9 的数字。
十六进制(Base 16):包含 0 到 9 和 A 到 F,用于表示计算机中的数据,特别在内存地址等方面广泛使用。
更高进制(Base 17 到 Base 36):超出了常见的十进制、二进制等,但在某些特殊应用中,仍然有其独特的价值。
例如,数字的字母表示(在十六进制及以上的进制中)是由 A 到 Z 表示的,其中 A = 10, B = 11, ..., Z = 35。
假设你有一个二进制数字 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。
你可能会遇到需要将十进制数字转换为十六进制的情况。例如,将数字 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。
你可以将十六进制数转换为八进制。例如,将 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。
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。
范围限制:base_convert() 函数的支持进制范围是从 2 到 36。超过这个范围会导致错误。
参数类型:$number 参数是字符串类型,即使输入的是数字,也需要将其转换为字符串类型传入。
大小写:在进制转换中,PHP 对字母的大小写不敏感。例如,base_convert("10", 10, 16) 和 base_convert("10", 10, 16) 的结果是相同的。返回的结果会以大写字母形式显示,但如果输入的是小写字母,它会被自动转换。