首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP base_convert() 進制轉換函數完整指南

     編輯:PHP 相關知識

任意進制 (2-36) 互轉的瑞士刀

base_convert() 可在 2 到 36 進制之間任意轉換,超過十進位用 a-z 表示 10-35。回傳字串,適合大數運算與編碼處理。

語法與參數

string base_convert(string $number, int $frombase, int $tobase)
  • $number:源數值字串(不帶前綴如 0x)
  • $frombase:源進制 (2-36)
  • $tobase:目標進制 (2-36)

常用轉換範例

<?php
// 16 進制 -> 2 進制
echo base_convert('a37334', 16, 2); // 101000110111001100110100

// 10 進制 -> 2, 8, 16
$num = '123';
echo base_convert($num, 10, 2);  // 1111011
echo base_convert($num, 10, 8);  // 173
echo base_convert($num, 10, 16); // 7b

// 2 進制 -> 10, 8
$bin = '100000101';
echo base_convert($bin, 2, 10); // 261
echo base_convert($bin, 2, 8);  // 405

// 36 進制支援 (0-9, a-z)
echo base_convert('zz', 36, 10); // 1295 (35*36 + 35)

進階應用:短網址 ID 編碼

<?php
function toBase36($int) {
    return base_convert($int, 10, 36);
}
function fromBase36($str) {
    return base_convert($str, 36, 10);
}

$id = 123456789;
$short = toBase36($id); // '21i3v9'
echo $short;
echo fromBase36($short); // 123456789

注意事項與限制

  • 精度限制:內部使用浮點運算,超過 64 位整數可能失去精度。超大數請用 gmp_* 或 bcmath 擴充。
  • 大小寫:輸入不分大小寫,輸出一律小寫。
  • 非標準進制:不支援 36 以上進制(如 Base64),需自行實作。
  • 前導零:輸出不保留前導零。

替代方案對比

函數適用場景
decbin/bindec專用 10↔2,速度較快
decoct/octdec專用 10↔8
dechex/hexdec專用 10↔16,最常用
base_convert任意進制互轉,通用性最強
gmp_strval超大整數任意進制,需 GMP 擴充
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved