【知识笔记】Base64编码解码原理及手动实现(C#)
2017-09-21 16:27
513 查看
1.【Base64编码原理】@叶落为重生
-base64的编码都是按字符串长度,以每3个8bit的字符为一组,
-然后针对每组,首先获取每个字符的ASCII编码,
-然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节
-然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节
-然后将这4个8bit的字节转换成10进制,对照Base64编码表 (下表),得到对应编码后的字符。
(注:1. 要求被编码字符是8bit的,所以须在ASCII编码范围内,\u0000-\u00ff,中文就不行。
2. 如果被编码字符长度不是3的倍数的时候,则都用0代替,对应的输出字符为=)
比如举下面两个例子:
a) 字符长度为能被3整除时:比如“Tom” :
所以,code('Tom') = VG9t
b) 字符串长度不能被3整除时,比如“Lucy”:
-base64的编码都是按字符串长度,以每3个8bit的字符为一组,
-然后针对每组,首先获取每个字符的ASCII编码,
-然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节
-然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节
-然后将这4个8bit的字节转换成10进制,对照Base64编码表 (下表),得到对应编码后的字符。
(注:1. 要求被编码字符是8bit的,所以须在ASCII编码范围内,\u0000-\u00ff,中文就不行。
2. 如果被编码字符长度不是3的倍数的时候,则都用0代替,对应的输出字符为=)
比如举下面两个例子:
a) 字符长度为能被3整除时:比如“Tom” :
T o m ASCII: 84 111 109 8bit字节: 01010100 01101111 01101101 6bit字节: 010101 000110 111101 101101 十进制: 21 6 61 45 对应编码: V G 9 t
所以,code('Tom') = VG9t
b) 字符串长度不能被3整除时,比如“Lucy”:
L u c y ASCII: 76 117 99 121 8bit字节: 01001100 01110101 01100011 01111001 00000000 00000000 6bit字节: 010011 000111 010101 100011 011110 010000 000000 000000 十进制: 19 7 21 35 30 16 (异常) (异常) 对应编码: T H V j e Q = =
相关文章推荐
- C#和JAVA利用BASE64实现图片编码解码
- [编解码] 关于base64编码的原理及实现
- 用javascript实现Base64编码(解决中文问题C#里解码) 转
- C#实现Base64的编码解码
- C#实现Base64处理的加密解密,编码解码示例
- Base64编码解码原理及C#编程实例
- 用C#实现Base64处理,加密解密,编码解码
- C# 实现Base64的编码解码
- C#实现Base64的编码与解码
- 用C#实现Base64处理,加密解密,编码解码
- Base64编码原理及编码、解码实现
- Base64实现编码、解码原理
- 不借助工具手动按原理实现图片转BASE64字符串编码
- JavaScript实现的Base64编码和解码
- Symbian Base64编码与解码的简单实现
- C#中Base64之编码,解码方法
- C#实现Base64编码与解码(二)
- .net C#实现Base64编码与解码
- Base64编码、解码的实现
- Base64编码解码与实现