Android进阶——Sharedpreferences保存对象和图片等复杂类型( 三 )


四、关于
public static void main(String[] args) {BASE64Encoder encoder = new BASE64Encoder();String s = "Man";String encoded = encoder.encode(s.getBytes());System.out.println("ecoded Man " + encoded);s = "Mo";String encoded = encoder.encode(s.getBytes());System.out.println("ecoded Mo" + encoded);s = "c";String encoded = encoder.encode(s.getBytes());System.out.println("ecoded c" + encoded);}
是一种基于64个可打印字符来表示二进制数据的表示方法 。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符 。三个字节有24个比特,对应于4个单元,即3个字节可表示4个可打印字符 。它可用来作为电子邮件的传输编码 。在中的可打印字符包括字母A-Z、a-z、0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同 。是一种可逆的编码方式 。最常见的表现就是在于可以用对图片编码变成流,反过来也可以把流转为图片,常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据 。包括MIME的email、在XML中存储复杂数据 。
这是编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/共64个字符(其实是65个字符,而“=”是填充字符) 。

Android进阶——Sharedpreferences保存对象和图片等复杂类型

文章插图
当长度为3个字节的数据经过编码后就变为4个字节,比如
Android进阶——Sharedpreferences保存对象和图片等复杂类型

文章插图
如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行的编码 。在编码后的文本后加上一个或两个’=’号,代表补足的字节数 。也就是说,当最后剩余一个八位字节(一个byte)时,最后一个6位的字节块有四位是0值,最后附加上两个等号;如果最后剩余两个八位字节(2个byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号 。参考下表:
Android进阶——Sharedpreferences保存对象和图片等复杂类型

文章插图
引自Wiki百科