懂BASE64算法的大侠来看看,300分。(300分)

  • 主题发起人 主题发起人 Writer
  • 开始时间 开始时间
W

Writer

Unregistered / Unconfirmed
GUEST, unregistred user!
我学东西要学最低层的,虽然很多地方有BASE64编码和解码函数,但我还是想弄清BASE64算法
到底是怎么一回事。我检索过了,还找不到满意的答案,望懂的大侠帮帮书忙。
[blue]  MIME/BASE64 的算法很简单,它将字符流顺序放入一个 24 位的缓冲区,缺字符
的地方补零。然后将缓冲区截断成为 4 个部分,高位在先,每个部分 6 位,用下面的 64
个字符重新表示:
“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop qrstuvwxyz0123456789+/”。
如果输入只有一个或两个字节,那么输出将用等号“=”补足。这可以隔断附加的信息造成
编码的混乱。[/blue]
上面是我在某地方找到的一段话,
“高位在先”这话怎么理解?
“用下面的 64个字符重新表示”又怎么理解?
懂的大侠帮帮忙。
 
输入 +--------Byte 1-------+ +--------Byte 2-------+ +--------Byte 3-------+
07 06 05 04 03 02 01 00 07 06 05 04 03 02 01 00 07 06 05 04 03 02 01 00
输出 +------Byte 1---+ +----- Byte2----+ +-----Byte3-----+ +----Byte 4-----+
这样处理后,每3个字节变为用4个字节表示的不大于64的数
然后,将这些不大于64的数用表中对应序号位置的字符来表示
 
这些0706……是什么,十六进制的数据?还是……
还有为什么“每3个字节变为用4个字节表示的不大于64的数“会不大于64。
小弟笨,望大侠见谅。
 
0706...是指位序号, 1个字节有8位(8bit), 低位是00,高位是07位
6bit表示的最大值为 111111(二进制) = 63(十进制)
 
经过自己的努力和tseug的帮助和提示终于明白了。多谢啦。
 
前面的明白,但还是不知什么时候用“=”??能不能更说明一下?
 

Similar threads

回复
0
查看
848
不得闲
I
回复
0
查看
645
import
I
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部