Base32/16

Base32编码

Base32使用了ASCII编码中可打印的32个字符(大写字母AZ和数字27)对任意字节数据进行编码.Base32将串起来的二进制数据按照5个二进制位分为一组,由于传输数据的单位是字节(即8个二进制位).所以分割之前的二进制位数是40的倍数(40是5和8的最小公倍数).
Base32/16_第1张图片

如果不足40位,则在编码后数据补充"=“,一个”="相当于一个组(5个二进制位),编码后的数据是原先的倍.有以下几种填充情况:
• input的长度(bit)是40的整数倍,不需要填充
• 多出来8bit,需要填充32bit的0,使用了填充的前2个bit,剩下的30bit需要用6个‘=’替代
• 多出来16bit,需要填充24bit的0,使用了填充的前4个bit,剩下的20bit需要用4个‘=’替代
• 多出来24bit,需要填充16bit的0,使用了填充的前1个bit,剩下的15bit需要用3个‘=’替代
• 多出来32bit,需要填充8bit的0,使用了填充的前3个bit,剩下的5bit需要用1个‘=’替代
Base32/16_第2张图片

Base16编码

Base16编码使用了ASCII编码中可打印的字符(数字09和字母AF)对应的二进制字节数据进行编码。
根据十进制数值找到Base16编码表里面对应的字符.Base16是4个比特位表示一个字符,所以原始是1个字节(8个比特位)刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符.数据量是原先的2倍.
Base32/16_第3张图片
每个字节都编码为2个字节,不存在填充情况

你可能感兴趣的:(编码,开发语言)