BASE64 编码解码
2013-11-15 17:00
218 查看
原理很简单
a-z ---> 26个字符
A-Z ----> 26个字符
0-9 -----> 10个字符
+ / -------> 2个字符
26 + 26 + 10 +2 = 64
C中一个数组,长度是64,那么,是从0 - 63来寻找数组里面的成员值的,
63的 二进制位 111 111 刚好是 6位
所以,6位来表示编码后的一个字符
好了,我们来构造 一个表
里面刚好是 64个字符 ,意味着 0 就表示A 1就表示B 11 (二进制) 就表示C
好了,表构造好了。。
比如我们有一个16进制的数字
0x88 0x88 0x88(16 进制)我们换算成 二进制
就是
10001000 10001000 10001000
我们分割一下,这样容易看
100010 001000 100010 001000
每6个一位,是不是通过我们上面的那个表就可以构造了呢?
好了,接下来就是特殊情况,
普通情况 三个字节 == 24位 如果我们要 按照每个6位来分组,是不是可以分为 4组?
也就是上面的,
接下来的是,你可能会问,如果 只有1个字节怎么办?
好来看一下
0x88 二进制 100010 00 通过分组以后,还多余两个00不够6位
这里怎么办?通过我个人的理解,如果只有一个字节,大家看如果是3个字节,那么计算是不是很方便,
大神们发明这个的时候,就想到了,如果对齐以后,是不是很方便?那么我们 1个字节要对齐到3个字节
是不是解码的时候,我们并不知道编码的时候多加了两个字节?为了 很明显的表示,,多加两个字节在编码
以后就多加两个 '='
好了,现在是两个字节的情况下,通过上面的介绍,我们对齐一下,也就是 对齐到三个字节,需要添加一个'='
通过对齐以后,就很好处理了,好了大家有什么不懂,可以下载代码看一下
源码下载地址:
a-z ---> 26个字符
A-Z ----> 26个字符
0-9 -----> 10个字符
+ / -------> 2个字符
26 + 26 + 10 +2 = 64
C中一个数组,长度是64,那么,是从0 - 63来寻找数组里面的成员值的,
63的 二进制位 111 111 刚好是 6位
所以,6位来表示编码后的一个字符
好了,我们来构造 一个表
char *sTable={"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
里面刚好是 64个字符 ,意味着 0 就表示A 1就表示B 11 (二进制) 就表示C
好了,表构造好了。。
比如我们有一个16进制的数字
0x88 0x88 0x88(16 进制)我们换算成 二进制
就是
10001000 10001000 10001000
我们分割一下,这样容易看
100010 001000 100010 001000
每6个一位,是不是通过我们上面的那个表就可以构造了呢?
好了,接下来就是特殊情况,
普通情况 三个字节 == 24位 如果我们要 按照每个6位来分组,是不是可以分为 4组?
也就是上面的,
接下来的是,你可能会问,如果 只有1个字节怎么办?
好来看一下
0x88 二进制 100010 00 通过分组以后,还多余两个00不够6位
这里怎么办?通过我个人的理解,如果只有一个字节,大家看如果是3个字节,那么计算是不是很方便,
大神们发明这个的时候,就想到了,如果对齐以后,是不是很方便?那么我们 1个字节要对齐到3个字节
是不是解码的时候,我们并不知道编码的时候多加了两个字节?为了 很明显的表示,,多加两个字节在编码
以后就多加两个 '='
好了,现在是两个字节的情况下,通过上面的介绍,我们对齐一下,也就是 对齐到三个字节,需要添加一个'='
通过对齐以后,就很好处理了,好了大家有什么不懂,可以下载代码看一下
源码下载地址:
http://download.csdn.net/detail/u012607841/6557835
相关文章推荐
- Symbian平台下Base64编码及解码(转)
- JS实现base64编码与解码
- Base64编码与解码实现
- 关于Base64编码解码
- java:7种Base64编码和解码功能详解和性能比较
- Base64编码解码原理详解
- Base64 算法原理,以及编码、解码【加密、解密】 介绍
- Base64编码解码的实现(C语言)
- Base64编码解码
- JavaScript:详解 Base64 编码和解码
- nodejs base64 编码解码
- C#的base64编码、解码函数
- Base64编码和解码
- c# base64 编码解码
- 自定义Base64编码和解码的实现
- 使用 命令行进行 base64 编码和解码
- 【java】java base64编码与解码
- ANDROID BASE64编码解码
- Base64编码解码c语言实现
- Base64系列第二篇 python中使用Base64编码解码