이 함수는 입력받은 문자열(또는 숫자) 진수를 원하는 진수로 변경하는 함수입니다. 

base_convert ( string $number , int $frombase , int $tobase );

입력받은 number 문자열이 frombase 인 진수를 tobase 진수로 변경합니다. 

frombase, tobase 인수 모두 2~36 진수 사이의 값이어야 하며 number 인수는 대소문자를 구분하지 않습니다. 

<?php
$number = 1010;
echo base_convert($number, 2, 16);
/*
결과: 
a
*/
?>

위 코드에서 입력받은 ‘1010‘ 값이 ‘2‘진수이며 이것을 16진수로 변환한 값이 ’a’ 입니다.

<?php
$number = 'a37334';
echo base_convert($number, 16, 2);
/*
결과:
101000110111001100110100
*/
?>

위 코드에서 입력받은 ‘a37334‘ 값이 ‘16‘진수이며 이것을 2진수로 변환한 값이 ’101000110111001100110100’입니다. 아래는 입력받은 문자열이 16진수이고 8진수로 변환 값이 37405 이 됩니다.

<?php
$number = "3f05";
echo base_convert($number, 16, 8);
/*
결과:
37405
*/
?>

PHP 7.4부터 입력받은 문자열에 유효하지 문자열이 포함되어 있으면 해당 문자열을 무시하게 됩니다. 예를 들어 f, adf, z, q 문자열은 2진수가 아니므로 무시되면 1010 값만 남게 되므로 나머지 값을 16진수로 변환하면 ‘a’ 값이 나옵니다.

<?php
$number = "f10adf1z0q";
echo base_convert($number, 2, 16);
/*
결과:
a
*/
?>

이것을 이용하면 a-Z0-9 문자열로 이뤄진 유일한 값을 만들 수 있습니다. 예를 들어 URL 끝에 붙는 ‘http://example.com/5yc23’ 형식의 단축 URL 문자열을 만들 수 있습니다.

<?php
$number = 1;
$number += 10000000;
echo ‘http://example.com/’ . base_convert($number, 10, 36);
/*
결과:
http://example.com/5yc1t
*/

for($i=1; $i<100; $i++){
  $i += 10000000;
  echo ‘http://example.com/’ . base_convert($i, 10, 36) . "<br/>";
}?>

0 댓글