文档章节

base64编解码

程序猿刚子
 程序猿刚子
发布于 2012/08/31 13:18
字数 419
阅读 81
收藏 0

定义

BASE64编码是一种常用的将二进制数据转换为可打印字符的编码。与HEX显示相比,它占用的空间较小。BASE64编码在RFC 3548 (参见扩展阅读)中定义。

 base64编解码原理

  将数据编码成BASE64编码时,以3字节数据为一组,转换为24bit的二进制数,将24bit的二进制数分成四组,每组6bit。对于每一组,得到一个数字:0-63。然后根据这个数字查表即得到结果。表如下:

Value	Char	Value	Char	Value	Char	Value	Char
0	A	16	Q	32	g	48	w
1	B	17	R	33	h	49	x
2	C	18	S	34	i	50	y
3	D	19	T	35	j	51	z
4	E	20	U	36	k	52	0
5	F	21	V	37	l	53	1
6	G	22	W	38	m	54	2
7	H	23	X	39	n	55	3
8	I	24	Y	40	o	56	4
9	J	25	Z	41	p	57	5
10	K	26	a	42	q	58	6
11	L	27	b	43	r	59	7
12	M	28	c	44	s	60	8
13	N	29	d	45	t	61	9
14	O	30	e	46	u	62	+
15	P	31	f	47	v	63	/

BASE64填充:在不够的情况下在右边加0。

  有三种情况:
  1) 输入数据比特数是24的整数倍(输入字节为3字节整数倍),则无填充;
  2) 输入数据最后编码的是1个字节(输入数据字节数除3余1),即8比特,则需要填充2个"==",因为要补齐6比特,需要加2个00;
  3)输入数据最后编码是2个字节(输入数据字节数除3余2),则需要填充1个"=",因为补齐6比特,需要加一个00。

© 著作权归作者所有

程序猿刚子
粉丝 14
博文 18
码字总数 7972
作品 0
丰台
高级程序员
私信 提问
加载中

评论(1)

程序猿刚子
程序猿刚子 博主
基础知识
SLICE30K/Base64.js

Base64.js 如果这个项目对你有帮助或者你觉得这个项目还不错的话,给点个星呗! 简介 虽然JavaScript中可以使用原生的btoa和atob函数进行Base64的编解码。但是不支持中文字符,并且不支持url...

SLICE30K
2017/05/22
0
0
Base64系列第一篇 Base64介绍

本文地址:http://blog.csdn.net/morewindows/article/details/11871429转载请标明出处,谢谢。 欢迎关注微博:http://weibo.com/MoreWindows 本系列一共四篇: 1. 《Base64系列第一篇 Base...

morewindows
2013/10/29
0
0
base64编码后传输后+号变成空格

生产环境中发现base64解码错误 下面定位问题: 系统流程:前端压缩后产生byte[], 用base64编码发送到后端,后端解码后解压缩。发现后端base64解码错误。 定位问题:打开debug日志,比较前端编...

Small-Liu
2016/01/28
2.7K
0
在 Java 中如何进行 BASE64 编码和解码

BASE64 编码是一种常用的字符编码,在很多地方都会用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码。下面是本人编的两个小...

liweigov
2012/06/26
5.1K
3
python 常用内建模块之base64

python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 base64 Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,...

展菲
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Experts say the weaker pound is drawing investors to the UK tech sector

UK tech companies secured a record £5.5bn in foreign investment in the first seven months of this year, research shows. This was more than the amount invested per capita in th......

wowloop
28分钟前
5
0
Add support for Android 9-patch images in BorderImage

The 9-patch image implementation in Qt Quick Controls 1 is an internal implementation detail of the Android style. It cannot handle .9.png image files out of the box, but takes ......

shzwork
33分钟前
4
0
c/c++日期时间处理函数小结

日期时间处理函数: 日期时间转为字符串 strftime/std::put_time 字符串解析成日期时间 strptime/std::get_time 时间结构转换:time_t->tm localtime:time_t->tm 时间结构转换:tm->time_t ...

chuqq
37分钟前
5
0
Apache Flink 进阶入门(二):Time 深度解析

前言 Flink 的 API 大体上可以划分为三个层次:处于最底层的 ProcessFunction、中间一层的 DataStream API 和最上层的 SQL/Table API,这三层中的每一层都非常依赖于时间属性。时间属性是流处...

大涛学长
38分钟前
4
0
创龙基于Xilinx Artix-7系列FPGA处理器

SOM-TLA7是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的核心板,可配套广州创龙Artix-7开发板使用。核心板尺寸仅70mm*50mm,采用沉金无铅工艺的10层板设计,专业的PCB Layout保证信号...

Tronlong创龙
44分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部