一文读懂Base64

这几天在和第三方交互的时候,对方返回的数据是base64格式的数据,所以这两天又彻底捋了下Base64的来龙去脉。之前看过一篇文章说的非常好(再找到给加上链接),我在这不详细说明了,只说转换过程。

还是使用中文"爸"来举例说明,在之前的文章"一文彻底搞懂计算机中文编码"和"一文读懂UTF-8的编码规则"已了解到"爸"使用GBK编码后数据为"B0D6(10110000 11010110)",使用utf-8编码数据为"E 7 8 8 B 8(1110 0111 1000 1000 1011 1000)"。

前边我们已经有了测试数据,那么Base64编码规则如下:

就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集,(任何符号都可以转换成这个字符集中的字符,这个转换过程就叫做base64编码。

Base64 编码的字符索引表如下所示:

B0D6(10110000 11010110)转换过程如下:

步骤 数据 数据 数据 数据
先按每6位分组: 101100 001101 011000
高位补00: 00101100 00001101 00011000
转换成十进制: 44 13 24
索引映射字符: s N Y
编码后数据: s N Y =

像上边不够24位,只有16位,name最后一个四位低位同样补"00",剩下的一个字节用"="补齐。

E 7 8 8 B 8(1110 0111 1000 1000 1011 1000)转换过程如下:

步骤 数据 数据 数据 数据
先按每6位分组: 111001 111000 100010 111000
高位补00: 00111001 00111000 00100010 00111000
转换成十进制: 57 56 34 56
索引映射字符: 5 4 i 4
编码后数据: 5 4 i 4

验证程序:

java 复制代码
    String str = "爸";
    System.out.println(Base64.encode(str.getBytes("gb2312")));
    System.out.println(Base64.encode(str.getBytes("utf-8")));

运行结果如下:

相关推荐
QGC二次开发21 天前
Qt:图片文字转base64程序
开发语言·c++·qt·数据可视化·base64·编码
安红豆.1 个月前
特殊的 BASE64 1
ctf·base64·汇编语言·逆向工程
萧仁武1 个月前
【Vue】以RuoYi框架前端为例,ElementUI封装图片上传组件——将图片信息转成base64后提交到后端保存
vue·ruoyi·base64
我想学LINUX4 个月前
【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)
开源·嵌入式·base64·openssl·系统开发·base16·解编码
梦醒三叹4 个月前
Base64文件流查看下载PDF方法-CSDN
pdf·base64
tekin5 个月前
Base64 编码表 参考
base64·编码·base64编码表
weixin_468466855 个月前
离线html文件及资源文件夹转换为单个mhtml文件
python·html·base64·mhtml·quoted-print·文件格式转换·文件存档
任磊abc5 个月前
前端加密的方式汇总
前端·哈希算法·base64·非对称加密·md5·对称加密·前端加密
DTcode76 个月前
微信小程序中的图像奥秘:图片与Base64的华丽变身记
微信小程序·小程序·base64
Amd79410 个月前
Base64编码:数据传输的安全使者
网络·数据结构·算法·base64·编码