當前位置:才華齋>計算機>php語言>

利用PHP自定義多進位制

php語言 閱讀(5.21K)

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