<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="[转]C#实现Base64编码与解码" id="card1">
<p> 游客</p><p>
标题:[转]C#实现Base64编码与解码<br/>
正文:<br/>
一、编码规则Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据，再把这24位数据分成4组，即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数，也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 &amp;ldquo;=&amp;rdquo;。例：将对ABC进行BASE64编码：1、首先取ABC对应的ASCII码值。A（65）B（66）C（67）；2、再取二进制值A（01000001）B（01000010）C（01000011）；3、然后把这三个字节的二进制码接起来（010000010100001001000011）；4、 再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值，（00010000）（00010100）（00001001）（00000011），其中蓝色部分为真实数据；5、再把这四个字节数据转化成10进制数得（16）（20）（9）（3）；6、最后根据BASE64给出的64个基本字符表，查出对应的ASCII码字符（Q）（U）（J）（D），这里的值实际就是数据在字符表中的索引。注：BASE64字符表：ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/二、解码规则解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。三、C#中的实现编码类：-C#/// &amp;lt;summary&amp;gt;    /// Base64编码类。    /// 将byte[]类型转换成Base64编码的string类型。    /// &amp;lt;/summary&amp;gt;    public class Base64Encoder    {   <br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=476&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=476&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=476&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=476&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=476&amp;Page=22">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=476">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=476">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>