Công cụ tính kích thước mã hóa Base64 là gì?
Base64 là một phương thức mã hóa dùng 64 ký tự ASCII có thể in được để biểu diễn dữ liệu nhị phân. Nó được sử dụng rất phổ biến để nhúng hình ảnh trực tiếp vào HTML/CSS (data URI), đính kèm tệp trong email (MIME), hay truyền dữ liệu nhị phân trong JSON và token. Vì Base64 biến mỗi 3 byte đầu vào thành 4 ký tự đầu ra nên kết quả sau mã hóa luôn lớn hơn dữ liệu gốc — tăng khoảng 33%. Công cụ này cho bạn biết chính xác dữ liệu của mình sẽ "phình" ra bao nhiêu sau khi mã hóa.
Cách sử dụng
Nhập kích thước tệp hoặc dữ liệu gốc, chọn đơn vị (byte, KB, MB hoặc GB) và quyết định kết quả có sử dụng ký tự đệm chuẩn hay không (các ký tự = ở cuối). Công cụ sẽ trả về kích thước sau mã hóa tính bằng byte cùng với tỷ lệ phần trăm dung lượng tăng thêm do quá trình mã hóa.
Giải thích công thức
Base64 chuẩn xử lý dữ liệu đầu vào theo từng nhóm 3 byte. Mỗi nhóm tạo ra đúng 4 ký tự, còn nhóm cuối cùng (nếu không đủ 3 byte) sẽ được bổ sung ký tự = cho đủ 4 ký tự. Vì vậy kích thước có ký tự đệm là:
Nếu tắt ký tự đệm, công cụ chỉ tạo ra đúng số ký tự thực sự cần thiết: \(\left\lceil \frac{4 \times \text{so\_byte\_dau\_vao}}{3} \right\rceil\), nhờ đó loại bỏ được 1–2 ký tự đệm cho mỗi lần mã hóa.
Ví dụ minh họa
Giả sử bạn có một tệp 1.000 byte. Lấy 1.000 chia cho 3 được 333,33, làm tròn lên (ceil) thành 334, rồi nhân với 4: \(334 \times 4 = 1336\) byte. Mức tăng dung lượng là \((1336 - 1000) / 1000 = 33{,}6\%\). Nếu không dùng ký tự đệm, kết quả sẽ là \(\left\lceil 4000/3 \right\rceil = \left\lceil 1333{,}33 \right\rceil = 1334\) byte.
Các Thuật Ngữ Chính Được Giải Thích
- Base64
-
Một phương pháp mã hóa nhị phân thành văn bản biểu diễn dữ liệu nhị phân tùy ý bằng cách sử dụng một tập hợp 64 ký tự ASCII có thể in được (A–Z, a–z, 0–9, cộng với
+và/). Nó cho phép nội dung nhị phân truyền an toàn thông qua các kênh chỉ văn bản như nội dung email, JSON, XML và URL. - Nhóm 3 byte / Khối 4 ký tự
- Base64 hoạt động theo các nhóm cố định. Mỗi 3 byte (24 bit) dữ liệu đầu vào được chia thành bốn khối 6 bit, mỗi khối được ánh xạ tới một ký tự Base64. Vì vậy 3 byte đầu vào luôn trở thành 4 ký tự đầu ra — nguyên nhân gốc rễ của sự tăng kích thước của mã hóa.
-
Đệm (
=) -
Khi độ dài đầu vào không phải là bội số chính xác của 3, nhóm cuối cùng không hoàn chỉnh. Bộ mã hóa nối thêm một hoặc hai ký tự
=sao cho độ dài đầu ra vẫn là bội số của 4. Một byte còn lại tạo ra hai=; hai byte còn lại tạo ra một=. - Độ dư thừa
- Kích thước bổ sung mà Base64 thêm vào so với dữ liệu gốc. Vì 3 byte trở thành 4 ký tự, dữ liệu được mã hóa lớn hơn khoảng \(4/3 \approx 1.333\) lần, tức là tăng khoảng 33% (nhiều hơn một chút khi tính đến đệm và bất kỳ ngắt dòng nào).
- URI Dữ liệu
-
Một lược đồ URL (ví dụ
data:image/png;base64,iVBORw0KGgo…) nhúng nội dung được mã hóa Base64 của tệp trực tiếp vào tài liệu, loại bỏ nhu cầu yêu cầu mạng riêng biệt cho các tài sản nhỏ. - Gói dòng MIME
- Trong mã hóa email (MIME), đầu ra Base64 được chia thành các dòng tối đa 76 ký tự, mỗi dòng kết thúc bằng CRLF. Các ngắt dòng này thêm một lượng kích thước bổ sung nhỏ vượt quá sự mở rộng 33% cơ bản.
- Ký tự ASCII
- Một ký tự duy nhất từ tập hợp ASCII 7 bit, được mã hóa trong một byte. Mỗi ký tự trong đầu ra Base64 là một ký tự ASCII, do đó độ dài được mã hóa tính bằng ký tự bằng độ dài của nó tính bằng byte.
Câu hỏi thường gặp
Vì sao Base64 luôn lớn hơn? Cứ mỗi 6 bit dữ liệu được ánh xạ thành một ký tự ASCII 8 bit, nên bạn mất 25% hiệu suất, dẫn đến dung lượng tăng thêm khoảng 33%.
Kết quả có tính cả ký tự xuống dòng không? Không. Một số bộ mã hóa MIME chèn thêm ký tự xuống dòng sau mỗi 76 ký tự, làm tăng thêm một chút dung lượng. Công cụ này chỉ tính kích thước mã hóa thuần túy.
Còn data URI thì sao? Một data URI còn có thêm phần tiền tố như data:image/png;base64,. Bạn hãy cộng độ dài chuỗi tiền tố này vào kích thước đã mã hóa để có tổng độ dài đầy đủ của URI.