Base64
Ví dụ

Ví dụ dưới đây sử dụng văn bản ASCII để đơn giản hóa, nhưng đây không phải là trường hợp sử dụng điển hình vì nó đã có thể được chuyển một cách an toàn qua tất cả các hệ thống có thể xử lý Base64. Việc sử dụng điển hình hơn là mã hóa dữ liệu nhị phân (chẳng hạn như hình ảnh); dữ liệu Base64 kết quả sẽ chỉ chứa 64 ký tự ASCII khác nhau, tất cả đều có thể được chuyển qua các hệ thống một cách đáng tin cậy có thể làm hỏng các byte nguồn thô.
Đây là một thành ngữ nổi tiếng từ Điện toán "phân tán":
Many hands make light work. (Nhiều tay làm việc nhẹ)
Khi trích dẫn được mã hóa thành Base64, nó được biểu diễn dưới dạng chuỗi byte gồm các ký tự ASCII có đệm 8 bit được mã hóa trong lược đồ Base64 của MIME như sau (dòng mới và khoảng trắng có thể xuất hiện ở bất kỳ đâu nhưng sẽ bị bỏ qua khi giải mã):
Trong phần trích dẫn trên, giá trị được mã hóa của Man là TWFu. Được mã hóa bằng ASCII, các ký tự M, a và n được lưu trữ dưới dạng giá trị byte 77, 97, và 110, là giá trị nhị phân 8 bit của 01001101, 01100001,và 01101110. Ba giá trị này được nối với nhau thành một chuỗi 24 bit, tạo ra 010011010110000101101110. Các nhóm gồm 6 bit (6 bit có tối đa 26 = 64 giá trị nhị phân khác nhau) được chuyển đổi thành các số riêng lẻ từ trái sang phải (trong trường hợp này, có bốn số trong một chuỗi 24 bit), sau đó được chuyển đổi thành giá trị ký tự Base64 tương ứng.
Như ví dụ này minh họa, mã hóa Base64 chuyển đổi ba octet thành bốn ký tự được mã hóa.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Nguồn | Văn bản (ASCII) | M | M | M | M | M | M | M | M | a | a | a | a | a | a | a | a | n | n | n | n | n | n | n | n |
| Nguồn | Octet | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 110 (0x6e) | 110 (0x6e) | 110 (0x6e) | 110 (0x6e) | 110 (0x6e) | 110 (0x6e) | 110 (0x6e) | 110 (0x6e) |
| Bit | Bit | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
| Base64 được mã  hóa | Sextet | 19 | 19 | 19 | 19 | 19 | 19 | 22 | 22 | 22 | 22 | 22 | 22 | 5 | 5 | 5 | 5 | 5 | 5 | 46 | 46 | 46 | 46 | 46 | 46 |
| Base64 được mã  hóa | Ký tự | T | T | T | T | T | T | W | W | W | W | W | W | F | F | F | F | F | F | u | u | u | u | u | u |
| Base64 được mã  hóa | Octet | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 70 (0x46) | 70 (0x46) | 70 (0x46) | 70 (0x46) | 70 (0x46) | 70 (0x46) | 117 (0x75) | 117 (0x75) | 117 (0x75) | 117 (0x75) | 117 (0x75) | 117 (0x75) |
= các ký tự đệm có thể được thêm vào để làm cho khối được mã hóa cuối cùng chứa bốn ký tự Base64.
Phép chuyển đổi hệ thập lục phân sang hệ bát phân rất hữu ích để chuyển đổi giữa hệ nhị phân và Base64. Cả đối với máy tính nâng cao và ngôn ngữ lập trình, chuyển đổi như vậy đều có sẵn. Ví dụ: 24 bit ở trên - khi được chuyển đổi sang hệ thập lục phân - là 4D616E. 24 bit đó - khi được chuyển đổi thành bát phân là 23260556. 8 chữ số bát phân đó - khi được chia thành bốn nhóm là 23 26 05 56. Mỗi nhóm 2 chữ số - khi chuyển đổi sang thập phân là 19 22 05 46. Sử dụng bốn số thập phân đó số làm chỉ số cho bảng chỉ mục Base64, các ký tự ASCII tương ứng là TWFu.
Nếu chỉ có hai octet đầu vào quan trọng (ví dụ: 'Ma') hoặc khi nhóm đầu vào cuối cùng chỉ chứa hai octet, tất cả 16 bit sẽ được ghi lại trong ba chữ số Base64 đầu tiên (18 bit); hai bit ít quan trọng nhất của khối 6 bit mang nội dung cuối cùng sẽ trở thành 0 và bị loại bỏ khi giải mã (cùng với  = ký tự đệm):
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Nguồn | Văn bản (ASCII) | M | M | M | M | M | M | M | M | a | a | a | a | a | a | a | a |  |  |  |  |  |  |  |  |
| Nguồn | Octet | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) | 97 (0x61) |  |  |  |  |  |  |  |  |
| Bit | Bit | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |   |   |   |   |   |   |
| Base64 được mã hóa | Sextet | 19 | 19 | 19 | 19 | 19 | 19 | 22 | 22 | 22 | 22 | 22 | 22 | 4 | 4 | 4 | 4 | 4 | 4 | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm |
| Base64 được mã hóa | Ký tự | T | T | T | T | T | T | W | W | W | W | W | W | E | E | E | E | E | E | = | = | = | = | = | = |
| Base64 được mã hóa | Octet | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 87 (0x57) | 69 (0x45) | 69 (0x45) | 69 (0x45) | 69 (0x45) | 69 (0x45) | 69 (0x45) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) |
Nếu chỉ có một octet đầu vào có nghĩa (ví dụ: 'M') hoặc trong đó hai chữ số Base64 đầu tiên (12 bit); bốn bit ít quan trọng nhất của khối 6 bit mang nội dung cuối cùng sẽ trở thành 0 và bị loại bỏ khi giải mã (cùng với hai = ký tự đệm):
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Nguồn | Văn bản (ASCII) | M | M | M | M | M | M | M | M |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Nguồn | Octet | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) | 77 (0x4d) |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Bits | Bits | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |   |   |   |   |   |   |   |   |   |   |   |   |
| Base64 được mã  hóa | Sextet | 19 | 19 | 19 | 19 | 19 | 19 | 16 | 16 | 16 | 16 | 16 | 16 | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm | Đệm |
| Base64 được mã  hóa | Ký tự | T | T | T | T | T | T | Q | Q | Q | Q | Q | Q | = | = | = | = | = | = | = | = | = | = | = | = |
| Base64 được mã  hóa | Octet | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 84 (0x54) | 81 (0x51) | 81 (0x51) | 81 (0x51) | 81 (0x51) | 81 (0x51) | 81 (0x51) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) | 61 (0x3D) |