首页 > 其他分享 >Base64编码

Base64编码

时间:2023-02-01 20:31:57浏览次数:50  
标签:编码 字符 二进制 Base64 二进制位 十进制

介绍 Base64 编码

Base64 是一种使用 64 个可打印字符来表示二进制数据的编码方式。

Base64 中的 64 个可打印字符包括:大小写字母 a - z、阿拉伯数字 0 - 9,这样共有 62 个字符,另外两个可打印字符在不同的系统中而不同。RFC 4648 标准中,另外两个可打印字符是:加号 + 、斜线 /。Base64 使用等号 = 作为填充字符。


技术是为了解决问题而生的,Base64 编码的作用是:使用 64 个可打印字符来表示二进制数据,以便二进制数据在计算机中存储、通过网络传输。

Base64 编码的规则

Base64 编码的规则是:

  • 首先,将二进制数据中每 “三组 8 个二进制位” 重新分组为 “四组 6 个二进制位”;
  • 然后,每组的 6 个二进制位用一个十进制数来表示。6 个二进制位可表示的十进制数的范围是 0 - 63;
  • 接下来,根据 Base64 索引表,将每组的十进制数转换成对应的字符,即每组可以用一个可打印字符来表示;

"Man" 的 Base64 编码结果为 "TWFu",详细原理如下:

image-20230123120757169.png


Base64 编码将 3 个字节编码为 4 个字符。如果要编码的字节数不能被 3 整除,最后会多出 1 个或 2 个字节,那么可以使用下面的方法进行处理:

  • 先使用 0 字节值在末尾补足,使字节数能够被 3 整除,然后再进行 Base64 编码。
  • 在 Base64 编码结果的末尾加上一个或两个等号 =,代表补足的字节数。

举例说明,最后剩余两个字节待补足:

image-20230123121133570.png

举例说明,最后剩余一个字节待补足:

image-20230123121153663.png

Base64 索引表

RFC 4648 标准的 Base64 索引表

十进制 二进制 字符 十进制 二进制 字符 十进制 二进制 字符 十进制 二进制 字符
000000 A 16 010000 Q 32 100000 g 48 110000 w
1 000001 B 17 010001 R 33 100001 h 49 110001 x
2 000010 C 18 010010 S 34 100010 i 50 110010 y
3 000011 D 19 010011 T 35 100011 j 51 110011 z
4 000100 E 20 010100 U 36 100100 k 52 110100
5 000101 F 21 010101 V 37 100101 l 53 110101 1
6 000110 G 22 010110 W 38 100110 m 54 110110 2
7 000111 H 23 010111 X 39 100111 n 55 110111 3
8 001000 I 24 011000 Y 40 101000 o 56 111000 4
9 001001 J 25 011001 Z 41 101001 p 57 111001 5
10 001010 K 26 011010 a 42 101010 q 58 111010 6
11 001011 L 27 011011 b 43 101011 r 59 111011 7
12 001100 M 28 011100 c 44 101100 s 60 111100 8
13 001101 N 29 011101 d 45 101101 t 61 111101 9
14 001110 O 30 011110 e 46 101110 u 62 111110 +
15 001111 P 31 011111 f 47 101111 v 63 111111 /
填充 =

image-20230123120641215.png

参考资料

Base64 - 维基百科,自由的百科全书 (wikipedia.org)

标签:编码,字符,二进制,Base64,二进制位,十进制
From: https://blog.51cto.com/haofeiyu/6031811

相关文章

  • Base64编码
    介绍Base64编码Base64是一种使用64个可打印字符来表示二进制数据的编码方式。Base64中的64个可打印字符包括:大小写字母a-z、阿拉伯数字0-9,这样共有62个......
  • 使用base64编码加密解密
    Base64编码简介Base64这个术语最初是在“MIME内容传输编码规范”中提出的。Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚。它实际上是一种“二进制到文......
  • RTMP录屏直播屏幕数据获取与MediaCodec编码
    目录前言RTMP直播实现流程视频采集——MediaProjection编码——MediaCodec音频采集——AudioRecordRTMP音频包数据RTMP视频数据前言本文介绍的是MediaProjection录屏、麦......
  • Java Unicode编码系统
    Unicode是一种通用的国际标准字符编码,能够表示世界上大多数的书面语言。为什么java使用Unicode系统?在Unicode之前,有很多语言标准:ASCII(美国信息交换标准代码)。ISO......
  • .net 对接极兔平台 java Base64与.net Base64数据不一致及POST 带header 和body 参数
    近几天对接极兔平台,遇到javaBase64与.netBase64数据不一致及POST带header和body参数的问题,费了一些周折,现在记录下来,供大家参考。1. javaBase64与.netBase64数据......
  • vue 使用天地图地理编码API 报跨域错误: from origin 'http://localhost' has been blo
     解决办法加了一个header头之后可以正常访问  "Access-Control-Allow-Origin":"*",;axios.get(`${this.addressBDApi}geocoder?ds={"k......
  • %E6%97% 这些其实用于网络的utf-8编码
    1、解释:经分析,是“汉字”两个中文字符通过UTF8编码,转换为字节数组,再通过单字节格式化,转换为16进制数的结果。解析代码如下,try{//TODOAuto-generatedmethodstubStr......
  • 基于.net core的Azure function 如何使用.net framework所支持的编码
    在azurefunction中通过http请求call第三方api时,response返回是一堆中文乱码,发现数据格式使用的是"gb2312"编码因此在StreamReader的时候,增加了“gb2312”的encoding,代码......
  • 谷歌邮箱无法显示使用 Base64 处理的图片的解决方法
    前言有时候图片会使用Base64编码来处理,然后再传到前端img标签的src属性里展示,这里记录遇到的一个问题,就是使用谷歌邮箱来打开图片,使用了Base64编码处理的图片是展......
  • IDEA字体编码设置
    通过菜单中的File-->Settings进行设置(IntelliJIDEA基本所有设置都在该菜单下);字体设置主题的字体一般不建议修改,主题就是指整个Idea工具;代码开发的编辑器的字体建议......