현재 위치: > 최신 기사 목록> UUID 또는 Guids를 처리하기 위해 HEXDEC 기능을 사용하기위한 실질적인 팁은 무엇입니까?

UUID 또는 Guids를 처리하기 위해 HEXDEC 기능을 사용하기위한 실질적인 팁은 무엇입니까?

gitbox 2025-06-11

HEXDEC 기능은 무엇입니까?

HEXDEC 은 육각형 문자열을 10 진수 숫자로 변환하기위한 PHP 내장 기능입니다. 예를 들어:

 <?php
echo hexdec('1a'); // 산출 26
?>

그러나 Hexdec은 문자열 (0-9, AF)에서 숫자와 16 진 문자 만 처리 할 수 ​​있습니다. 입력에 비 헬스 캐릭터 문자 (예 : UUID- 의 짧은 수평선)가 포함 된 경우 먼저 문자열을 청소해야합니다.


UUID에 대한 기본 처리 방법

UUID는 일반적으로 다음과 같습니다.

 550e8400-e29b-41d4-a716-446655440000

헥 데크를 사용하여 처리하려면 먼저 중간에 짧은 수평선을 제거합니다.

 <?php
$uuid = '550e8400-e29b-41d4-a716-446655440000';
$cleanUuid = str_replace('-', '', $uuid);
echo hexdec($cleanUuid);
?>

참고 : UUID가 더 길기 때문에 (32 16 진수) 소수점 값이 PHP 정수의 범위를 초과하여 HEXDEC가 올바른 결과 만 반환합니다.


정수 범위를 초과하는 UUID를 다루는 방법

PHP 정수는 64 비트 시스템에서 최대 64 비트 길이의 숫자를 지원합니다. 32 바이트 UUID의 경우 HEXDEC 로 직접 변환하면 종종 오버플로됩니다. 해결책:

  1. BC 수학 또는 GMP 확장자 <br>를 사용하십시오 이러한 확장은 모든 길이의 디지털 계산을 지원합니다.

 <?php
$uuid = '550e8400-e29b-41d4-a716-446655440000';
$cleanUuid = str_replace('-', '', $uuid);

function bcHexDec($hex) {
    $dec = '0';
    $len = strlen($hex);
    for ($i = 0; $i < $len; $i++) {
        $current = hexdec($hex[$i]);
        $dec = bcmul($dec, '16');
        $dec = bcadd($dec, $current);
    }
    return $dec;
}

echo bcHexDec($cleanUuid);
?>
  1. UUID의 일부 분야 만 변환 <br> 예를 들어 UUID의 처음 8 자만 변환합니다.

 <?php
$uuid = '550e8400-e29b-41d4-a716-446655440000';
$part = substr(str_replace('-', '', $uuid), 0, 8);
echo hexdec($part);
?>

이를 통해 인덱싱 또는 빠른 비교를 위해 더 적은 수의 숫자가 제공됩니다.


실용적인 기술 요약

  • 먼저 UUID의 짧은 수평선을 청소하여 HexDEC 에 전달 된 문자열에 16 진 문자 만 포함되도록하십시오.

  • HEXDEC을 사용하여 너무 긴 UUID를 변환하지 않으려면 BCMATH 또는 GMP를 사용하여 대형 수로를 구현하는 것이 좋습니다.

  • 요구 사항에 따라, 전환을 위해 UUID의 일부를 추출하고 수치 범위를 줄입니다.

  • 데이터베이스 인덱스 설계와 결합하여 UUID 변환 값은 정렬 및 빠른 검색에 사용됩니다.


추가 팁 : hexdec을 사용하여 UUID를 URL 매개 변수에서 얻습니다.

프로젝트에 UUID 매개 변수가 있고 디지털 처리로 빠르게 변환하려면 PHP의 $ _get 과 결합 할 수 있습니다.

 <?php
if (isset($_GET['uuid'])) {
    $uuid = $_GET['uuid'];
    $cleanUuid = str_replace('-', '', $uuid);
    echo hexdec(substr($cleanUuid, 0, 8)); // 변환 전에만8조금
}
?>

예제 액세스 :

 https://gitbox.net/project/page.php?uuid=550e8400-e29b-41d4-a716-446655440000