当前位置:首页 > 编程笔记 > 正文
已解决

一文读懂Base64

来自网友在路上 168868提问 提问时间:2023-10-09 16:23:50阅读次数: 68

最佳答案 问答题库688位专家为你答疑解惑

这几天在和第三方交互的时候,对方返回的数据是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位分组:101100001101011000高位补00:001011000000110100011000转换成十进制:441324索引映射字符:sNY编码后数据:sNY=

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

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

步骤数据数据数据数据先按每6位分组:111001111000100010111000高位补00:00111001001110000010001000111000转换成十进制:57563456索引映射字符:54i4编码后数据:54i4

验证程序:

    String str = "爸";System.out.println(Base64.encode(str.getBytes("gb2312")));System.out.println(Base64.encode(str.getBytes("utf-8")));

运行结果如下:
在这里插入图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"一文读懂Base64":http://eshow365.cn/6-17878-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!