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)的結果是相同的。返回的結果會以大寫字母形式顯示,但如果輸入的是小寫字母,它會被自動轉換。