CoderTools

Base64编解码

快速编码解码Base64字符串,支持文本和文件转换

字符集

什么是Base64?

Base64是一种基于64个可打印字符来表示二进制数据的编码方式。这些字符包括大小写字母、数字和一些特殊符号。Base64广泛用于在需要通过纯文本渠道传输二进制数据的场景中,如电子邮件附件、URL参数等。Base64编码方案最初在RFC 4648MIME规范(RFC 2045)中定义。

Base64编码算法原理:

Base64编码过程可以分为以下步骤:

  1. 将输入数据拆分为每3个字节一组
  2. 将这3个字节(共24位)重新分组为4个6位的块
  3. 每个6位的值(范围0-63)作为索引映射到Base64字符表
  4. 如果最后一组不足3个字节,用0位填充并在结果末尾添加相应数量的等号(=)作为填充符号

Base64字符集: A-Z, a-z, 0-9, +, /

填充字符: =

示例转换:

文本 "Man" 的ASCII码: 77 97 110
二进制表示: 01001101 01100001 01101110
重组为6位: 010011 010110 000101 101110
十进制值: 19 22 5 46
Base64结果: T W F u

简化的JavaScript实现代码:

// Base64 encoding implementation example (simplified)
function base64Encode(str) {
    // Base64 character set
    const base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    let result = '';
    let i = 0;

    // Process every 3 characters as a group
    while (i < str.length) {
        const char1 = str.charCodeAt(i++);
        const char2 = i < str.length ? str.charCodeAt(i++) : 0;
        const char3 = i < str.length ? str.charCodeAt(i++) : 0;
        
        // Convert 3 8-bit bytes into 4 6-bit indices
        const triplet = (char1 << 16) + (char2 << 8) + char3;
        
        // Extract 4 6-bit values from the triplet
        const index1 = (triplet >> 18) & 0x3F;
        const index2 = (triplet >> 12) & 0x3F;
        const index3 = (triplet >> 6) & 0x3F;
        const index4 = triplet & 0x3F;
        
        // Add padding based on the original data length
        if (i - 3 > str.length) {
            result += base64chars[index1] + base64chars[index2] + '==';
        } else if (i - 2 > str.length) {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + '=';
        } else {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + base64chars[index4];
        }
    }
  
    return result;
}

常见用途:

高级功能

16进制格式支持

我们的工具支持16进制格式输入和输出,对于处理程序代码中的二进制数据的开发者非常有用。

  • 输入:接受0x11,0x22,0x33或简单的112233格式
  • 输出:将解码的Base64转换回16进制格式以嵌入代码

字符集支持

不同的字符集将文本编码为字节的方式不同。我们的工具支持多种字符集来处理各种文本编码:

  • UTF-8: 支持所有Unicode字符的通用编码(默认)
  • ASCII: 支持基本英文字符的7位编码(0-127)
  • Latin-1 (ISO-8859-1): 支持西欧字符的8位编码(ISO-8859-1)
  • UTF-16: Windows和Java常用的16位编码(小端序)

注意事项:

Base64与其他编码的比较:

编码方式 特点 主要用途
Base64 使用64个ASCII字符表示二进制数据 电子邮件附件、二进制数据在文本中传输
URL编码 将特殊字符转换为%XX格式 URL参数传递、表单提交
16进制编码 每个字节用两个16进制字符表示 哈希值表示、二进制数据可视化

关于Base64的更多官方信息,请参考以下资源: RFC 4648(Base64标准) | Wikipedia: Base64 | RFC 2045(MIME规范)