인터넷이 대중화되면서 우리 생활은 점점 더 인터넷과 밀접하게 연관되고 있으며, 다양한 프로그래밍 언어 역시 네트워크 발전에 중요한 역할을 하고 있습니다. 그 중 PHP는 네트워크 개발에 널리 사용되는 스크립팅 언어로 점점 더 많은 개발자들이 알려지고 사용하고 있습니다. 하지만 실제 개발에서는 16진수 변환 함수를 사용해야 하는 경우가 종종 있는데, PHP 자체에서는 10진수, 16진수, 8진수, 2진수로 변환하는 메소드만 제공하고 16진수로 변환하는 메소드는 제공하지 않습니다. 다음으로, PHP가 어떻게 16진수로 변환하는 기능을 구현하는지 살펴보겠습니다.
이전에 16진수가 무엇인지 이해해야 합니다. Base 62는 숫자나 문자를 Base 62로 변환하는 기본 시스템입니다. 숫자와 대문자, 소문자로 구성되며, 0~9는 숫자, A~Z는 대문자, a~z는 소문자를 나타냅니다. 16진수는 짧은 URL 및 대용량 데이터 저장과 같은 분야에서 널리 사용되었습니다.
다음 단계에 따라 PHP를 16진수로 변환하는 기능을 구현할 수 있습니다.
1. 16진수에 포함된 문자 정의
먼저 숫자 0-9를 포함하여 16진수에 포함된 문자 집합을 정의해야 합니다. 대문자 A-Z 및 소문자 a-z, 총 62자입니다. 아래와 같이 문자열을 사용하여 이러한 문자를 저장할 수 있습니다.
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
2. 변환 함수 정의
다음으로 10진수를 62자리 숫자로 변환하는 함수를 정의해야 합니다. 기능. 이 함수는 먼저 숫자에 대한 나머지 및 나누기 연산을 수행하고 나머지를 62자리 문자 세트에 매핑하여 문자를 얻은 다음 몫을 다음 입력으로 사용해야 합니다. 몫이 0이 되고 최종 문자열이 16진수 표현이 될 때까지 이 과정을 반복합니다. 코드는 다음과 같습니다.
function base62_encode($number)
{
global $chars; $base = 62; $index = ''; do { $mod = $number % $base; $index .= $chars[$mod]; $number = ($number - $mod) / $base; } while ($number > 0); return $index;
}
이 예에서는 16진수 기준을 62로 설정하고 전역 변수 $chars에 문자 집합을 저장합니다. 루프에서 먼저 숫자에 대한 나머지 및 나누기 연산을 수행하고 나머지를 문자 세트에 매핑하여 해당 문자를 찾은 다음 문자열 $index의 끝에 연결합니다. 그런 다음 몫을 다음 입력으로 사용하고, 몫이 0이 될 때까지 이 프로세스를 계속하고, 최종 문자열을 반환합니다.
3. 역변환 함수 정의
62진수와 10진수 사이를 변환해야 하므로 62진수를 10진수로 변환하는 함수도 정의해야 합니다. 이 함수는 문자열을 오른쪽에서 왼쪽으로 탐색하고, 각 문자를 꺼내고, 62 기본 문자 집합에서 해당 위치를 얻은 다음, 여기에 62의 거듭제곱을 곱하고 결과에 추가해야 합니다. 코드는 다음과 같습니다.
function base62_decode($index)
{
global $chars; $base = 62; $length = strlen($index); $number = 0; for ($i = 0; $i < $length; $i++) { $number += strpos($chars, $index[$i]) * pow($base, $length - $i - 1); } return $number;
}
이 예에서는 16진수 기준을 62로 설정하고 전역 변수 $chars에 문자 집합을 저장합니다. 루프에서는 문자열을 오른쪽에서 왼쪽으로 탐색하고, 각 문자를 꺼내고, strpos 함수를 사용하여 문자 집합에서 해당 위치를 가져온 다음, 여기에 62의 거듭제곱을 곱하고, 그 결과를 $number에 누적합니다. 마지막으로 $number를 반환합니다.
4. 테스트 기능
마지막으로 이 두 기능이 제대로 작동하는지 테스트합니다. Rand 함수를 사용하여 임의의 10진수를 생성한 다음 이를 62진수로 변환한 다음 10진수로 변환하고 마지막으로 두 숫자를 비교하여 동일한지 확인할 수 있습니다. 코드는 다음과 같습니다:
$number = rand(1, 1000000);
$index = base62_encode($number);
$decode = base62_decode($index);
echo 'number: ' PHP_EOL. ;
echo 'index: ' . $index . PHP_EOL;
echo 'decode: ' . $decode . PHP_EOL;
위 코드를 실행하면 무작위로 생성된 10진수와 16진수로 변환된 문자열을 볼 수 있습니다. 다시 10진수로 변환한 후.
요약하자면, 문자셋, 변환함수, 역변환함수를 정의하고 테스트를 거쳐 10진수를 16진수로 변환하는 기능을 구현했습니다. 이 변환은 양의 정수만 처리할 수 있다는 점에 유의할 필요가 있습니다. 입력이 음수 또는 0인 경우 변환된 결과는 빈 문자열이 됩니다. 실제 개발에서는 특정 요구에 따라 수정하고 적용해야 합니다.
위 내용은 PHP를 16진수로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!