Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Làm việc với số hệ thập lục phân (Hex) trong MySQL

MySQL hỗ trợ chuyển đổi giữa hệ thập lục phân (hex) và thập phân (decimal) thông qua hàm CONV().

Cú pháp hàm CONV()

CONV(so_nguon, co_so_nguon, co_so_dich)
-- Chuyển hex sang decimal: CONV('hex_string', 16, 10)
-- Chuyển decimal sang hex: CONV(so_decimal, 10, 16)

Ví dụ 1: Chuyển đổi trực tiếp với SELECT

mysql> SELECT CONV('A', 16, 10) AS DecimalResult;
+---------------+
| DecimalResult |
+---------------+
| 10            |
+---------------+

mysql> SELECT CONV('AB', 16, 10) AS DecimalResult;
+---------------+
| DecimalResult |
+---------------+
| 171           |
+---------------+

mysql> SELECT CONV(255, 10, 16) AS HexResult;
+------------+
| HexResult  |
+------------+
| FF         |
+------------+

Ví dụ 2: Stored Procedure chuyển Hex → Decimal

Tạo stored procedure

DELIMITER //
CREATE PROCEDURE SP_HEX_TO_DEC(IN HEXVALUE VARCHAR(10))
BEGIN
    DECLARE Decimalvalue INT;
    SET Decimalvalue = CONV(HEXVALUE, 16, 10);
    SELECT Decimalvalue;
END //
DELIMITER ;

Gọi procedure

mysql> CALL SP_HEX_TO_DEC('A');
+--------------+
| Decimalvalue |
+--------------+
| 10           |
+--------------+

Cơ sở toán học chuyển đổi Hex → Decimal

Số hex AB chuyển sang decimal:

A = 10, B = 11 (trong hex)
AB(16) = 10 × 16¹ + 11 × 16⁰ = 160 + 11 = 171(10)

Công thức chung: Giá trị = Σ (chữ_số_i × 16^vị_trí_i), vị trí tính từ phải sang trái bắt đầu từ 0.

Các hàm liên quan

BIT_COUNT(N)
HàmChức năngVí dụ
CONV(N, from_base, to_base)Chuyển đổi cơ số (2-36)CONV('FF',16,10) = 255
HEX(N)Số/chuỗi → Hex stringHEX(255) = 'FF'
UNHEX(str)Hex string → BinaryUNHEX('FF') = 0xFF
Đếm bit 1 trong binaryBIT_COUNT(7) = 3 (111)

Ứng dụng thực tế

  • Lưu trữ màu sắc: HEX(rgb) / CONV(hex_color, 16, 10)
  • Xử lý hash, checksum (MD5, SHA lưu dưới hex)
  • Bitmask flags: CONV('F',16,10) = 15 (1111b)
  • Debug dữ liệu nhị phân

Lưu ý

  • CONV() trả về chuỗi, có thể CAST sang số: CAST(CONV('FF',16,10) AS UNSIGNED)
  • Hỗ trợ cơ số từ 2 đến 36
  • Chữ cái trong hex không phân biệt hoa/thường: CONV('ab',16,10) = CONV('AB',16,10)