/** * 自訂多進位,根據設定的多進位字串擷取十進位對應的多進位 * @param $str 自訂的多進位字串 * @param $num 十進位數字 * @return $xbin 對應的多進位數字 */function xbin($str, $num){ $num = floatval($num); $x = strlen($str); $arr = str_split($str); $digit = fmod($num, $x); $xbin = isset($arr[$digit]) ? $arr[$digit] : null; $pre_digit = floor($num / $x); if($pre_digit >= 1){ $pre_digit = xbin($str, $pre_digit); return $pre_digit.$xbin; } return $xbin;}// 測試8進位$str = '01234567';$a = xbin($str, 9);$b = decoct(9);dump($a); // string(2) "11"dump($b); // string(2) "11"// 測試16進位$str = '0123456789abcdef';$a = xbin($str, 31);$b = dechex(31);dump($a); // string(2) "1f"dump($b); // string(2) "1f"// 自訂30進位$str = '0123456789abcdefghijklmnopqrst';$a = xbin($str, 59);dump($a); // string(2) "1t"// 自訂92進位$str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()-=[];\',./{}:"<>?\|';$a = xbin($str, 183);dump($a); // string(2) "1|"