如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/**
* 自定义多进制,根据设置的多进制字符串获取十进制对应的多进制
* @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|"
|
以上就是小编为大家带来的PHP自定义多进制的方法全部内容了,希望大家多多支持服务器之家~