糯米文學吧

位置:首頁 > 計算機 > php語言

利用PHP自定義多進制

php語言4.83K

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

標籤:自定義 PHP 進制