Base64 vs Mã hóa Hex: Nên Chọn Cái Nào?
Quick Answer
Dùng Base64 khi kích thước quan trọng (tệp đính kèm email, data URLs, API payloads). Dùng Hex khi khả năng đọc quan trọng (debugging, hiển thị hash, mã màu, địa chỉ bộ nhớ). Base64 compact hơn; Hex dễ kiểm tra bằng mắt thường hơn.
Introduction
Base64 và Hex (thập lục phân) đều là lược đồ mã hóa binary-to-text. Base64 mã hóa 3 bytes thành 4 ký tự ASCII (33% overhead). Hex mã hóa 1 byte thành 2 ký tự ASCII (100% overhead). Cả hai đều dùng để biểu diễn dữ liệu binary trong ngữ cảnh văn bản, nhưng khác biệt đáng kể về hiệu quả và khả năng đọc.
Step by Step
-
Compare encoding efficiency
Base64: 3 bytes → 4 characters = 33% overhead. Hex: 1 byte → 2 characters = 100% overhead. For 1 KB of data, Base64 produces ~1.33 KB; Hex produces 2 KB. Base64 is 50% smaller than Hex for the same binary data.
-
Compare readability
Hex uses 16 characters (0-9, A-F), each representing 4 bits. You can easily read byte values. Base64 uses 64 characters (A-Z, a-z, 0-9, +, /), representing 6 bits each. Base64 output is harder to inspect manually because bytes are split across character boundaries.
-
Compare use cases
Base64: email attachments (MIME), data URLs, JWT payloads, API binary data transfer. Hex: hash digests (MD5, SHA-256), color codes (#FF5733), memory addresses, MAC addresses, binary debugging.
-
Compare character set and safety
Base64 uses + and / which are not URL-safe. Hex uses only 0-9 and A-F/a-f — always URL-safe and filename-safe. Hex is safe in any context; Base64 may need URL-safe variant.
-
Decide based on your use case
Email, data URLs, JWT, API payloads: Base64 (size matters). Hash display, debugging, color codes, memory addresses: Hex (readability matters).
Examples
Same data in Base64 and Hex
Input: Input: 'Hello' (5 bytes)
Base64: SGVsbG8= (8 chars)
Hex: 48656c6c6f (10 chars)
Output: Base64 is 20% smaller. Hex is easier to inspect (each pair = 1 byte).
Common Problems
- Base64 is not URL-safe: standard Base64 uses + and / which break in URLs and filenames — use URL-safe Base64 (- and _) for web contexts.
- Hex has 100% size overhead: Hex doubles the data size (1 byte → 2 chars), which is wasteful for large binary transfers — use Base64 when size matters.
- Base64 padding ambiguity: Base64 appends = padding characters which some systems strip or reject — handle padding consistently on both encode and decode sides.
- Hex case inconsistency: some systems use uppercase (A-F), others lowercase (a-f) — normalize case before comparison to avoid false mismatches.
Tips
- Use Base64 for email attachments, data URLs, and API payloads where size matters — it has only 33% overhead vs Hex's 100%.
- Use Hex for hash digests, color codes, MAC addresses, and debugging where human readability matters — each byte is a visible 2-character pair.
- Use URL-safe Base64 (replace + with -, / with _, strip =) when encoding binary data in URLs, query parameters, or filenames.
- When converting between Base64 and Hex, always decode to raw binary first, then re-encode — never try to convert character-by-character.