网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文
当前位置:书香门第 > 计算机 > php语言

利用PHP自定义多进制

栏目: php语言 / 发布于: / 人气:5.92K

PHP自定义多进制的方法有哪些?就跟随本站小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网!

利用PHP自定义多进制

如下所示:

?

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|"