字符编码之Base64

博学,切问,近思--詹子知(http://blog.csdn.net/zhiqiangzhan) 

1.什么是Base64.

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。

它采用64个可见的基本字符去传输所有信息,因此即使被不同的编码颠来倒去的编码解码也不会造成数据丢失。

索引对应字符索引对应字符索引对应字符索引对应字符
0A17R34i51z
1B18S35j520
2C19T36k531
3D20U37l542
4E21V38m553
5F22W39n564
6G23X40o575
7H24Y41p586
8I25Z42q597
9J26a43r608
10K27b44s619
11L28c45t62+
12M29d46u63/
13N30e47v  
14O31f48w  
15P32g49x  
16Q33h50y  

 

2.Base64的优势。

  1. 编码解码速度快。
  2. 具有一定的加密效果。
  3. 实现简单。
  4. 编码解码速度快。

3.实现原理。

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,因此, 转换后的字节一定会落在区间[0-64)当中,故此可以找到对应基本字符表示此字节,转换后的字符串理论上将要比原来的长1/3。

我们来看一个例子。

转换前:10101111 01101011 11001101
转换后:00101011 00110110 00101111 00001101

 

 

编码转换规则:

  1. 用指定的编码对字符串进行解码,得到解码后的字节数组。
  2. 按照规则把每3个字节转换为4个Base64基本字符。
  3. 处理最后的字节
    • 剩余的字节为0,编码转换结束。
    • 剩余的字节为1,把当前字节按照规则转换为Base64前两个字符,后面两位用'='补齐,编码转换结束。
    • 剩余的字节为1,把当前字节按照规则转换为Base64前三个字符,最后一位用'='补齐,编码转换结束。
  4. 得到编码后的Base64 String。


解码转换规则:

  1. 准备好需要解码的Base64 String。
  2. 每4个一组,转换为对应的3个字节。
  3. 处理最后剩余的字符。
  4. 得到解码后的字节数组。

 

4.通用的编码传输解决方案。

  1. 使用UTF-8对需要传输的String进行编码,得到编码后的字节数组。
  2. 用Base64对字节数组进行编码,得到Base64 String。
  3. 传输编码后的Base64 String。
  4. 接收到传输到字节数组, 如果是字节数组,用本地编码对其进行解码即可,得到Base64 String。
  5. 用Base64对 Base64 String 进行解码,得到字节数组。
  6. 用UTF-8对字节数组进行解码,得到最终被传输的String。

5.Java 实现。

  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值