Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 16진수 다루기: CONV() 함수로 10진수 변환하는 방법

MySQL에서 16진수를 10진수로 변환하는 방법

MySQL에서 16진수를 다루려면 CONV() 함수를 사용하면 됩니다. 이 함수는 서로 다른 진법 사이의 변환을 손쉽게 처리해 줍니다. 기본 문법은 다음과 같습니다.

SET anyVariableName = CONV(yourHexValue, 16, 10);

위 문법을 더 잘 이해하기 위해 실제 예제로 저장 프로시저(Stored Procedure)를 하나 만들어 보겠습니다. 저장 프로시저를 생성하는 쿼리는 다음과 같습니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE SP_HEX_TO_DEC( HEXVALUE VARCHAR(10) )
    -> BEGIN
    -> DECLARE Decimalvalue INTEGER;
    -> SET Decimalvalue = CONV(HEXVALUE,16,10);
    -> select Decimalvalue;
    -> END;
    -> //
Query OK, 0 rows affected (0.19 sec)
mysql> DELIMITER ;

이 저장 프로시저는 입력받은 16진수 값을 10진수로 변환해 출력하는 역할을 합니다. 16진수에서 'A'는 10진수로 10에 해당하므로, 여기서는 'A'를 매개변수로 전달해 보겠습니다. 저장 프로시저는 CALL 명령어를 사용해 호출할 수 있습니다.

저장 프로시저 호출하기

호출 문법은 다음과 같습니다.

CALL yourStoredProcedureName;

앞에서 생성한 저장 프로시저를 실제로 호출해 보겠습니다.

mysql> call SP_HEX_TO_DEC('A');

실행 결과는 다음과 같습니다. 저장 프로시저가 계산한 10진수 값이 정상적으로 출력되는 것을 확인할 수 있습니다.

+--------------+
| Decimalvalue |
+--------------+
| 10           |
+--------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

SELECT 문으로 직접 확인하기

저장 프로시저를 만들지 않고도 SELECT 문으로 간단하게 변환 결과를 확인할 수 있습니다.

mysql> select conv('AB',16,10) as DecimalResult;

실행 결과는 다음과 같습니다.

+---------------+
| DecimalResult |
+---------------+
| 171           |
+---------------+
1 row in set (0.00 sec)

16진수 → 10진수 변환 원리

이제 16진수가 어떤 과정을 거쳐 10진수로 변환되는지 그 원리를 살펴보겠습니다. 먼저 다음 규칙을 기억해 두세요.

16진수에서 A와 B는 각각 10진수의 10과 11을 나타냅니다.
10진수로 변환하는 공식은 다음과 같습니다:
N ……… + value3 × 16² + value2 × 16¹ + value1 × 16⁰
= 10 × 16¹ + 11 × 16⁰
= 160 + 11
= 171

즉, 16진수 'AB'는 자릿값 계산을 통해 10×16 + 11×1 = 171이라는 10진수 값으로 변환됩니다. CONV() 함수는 이러한 진법 변환 과정을 자동으로 처리해 주기 때문에, 개발자는 복잡한 계산 없이 간편하게 원하는 진법의 값을 얻을 수 있습니다.