當前位置: 首頁> 最新文章列表> 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)的結果是相同的。返回的結果會以大寫字母形式顯示,但如果輸入的是小寫字母,它會被自動轉換。