笔记113--关于Base64

一、使用场景

文件不太大时,转为base64字符串进行传输。文件太大会造成效率上的问题,具体多大不知道,文件大建议用stream。


二、刨根问底
1、定义

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一将二进制序列转为人类可读的ASCII字符序列。常用在需用通过文本协议(如HTTP和SMTP)来传输二进制数据的情况下。俩作用:1)在HTTP环境下传输较长的标识信息。2)很弱的加密(常常需要把二进制数据编码为适合放在URL中的形式,此时Base64所编码的数据不会被人用肉眼所直接看到)。

2、为什么叫Base64?

使用A--Z,a--z,0--9,+,/  这64个字符编码。

3、编码原理:

将3个字节转换成4个字节:先读入3个字节,每读一个字节,左移8位,再右移4次,每次6位,这样就有4个字节了,这样还不能保证得到的字符都是可见字符,为了到达此目的,Base64制定了一个编码表,进行统一的转换。当剩下的字符数量不足3个字节时,则使用0进行填充,相应的,输出字符则使用‘=’占位,因此编码后输出的文本末尾可能会出现1至2个‘=’。解码原理是将4个字节转换成3个字节,先读入4个6位,每次左移6位,再右移3次,每次8位,这样就还原了。

三、实践

1、将文件编码为Base64字符串
public static String encodeBase64File(String path) throws Exception {
<span style="white-space:pre">	</span>File  file = new File(path);
<span style="white-space:pre">	</span>FileInputStream inputFile = new FileInputStream(file);
<span style="white-space:pre">	</span>byte[] buffer = new byte[(int)file.length()];
<span style="white-space:pre">	</span>inputFile.read(buffer);
        inputFile.close();
        return Base64.encodeToString(buffer,Base64.DEFAULT);
}
2、将Base64字符串解码保存到文件

public static void decoderBase64File(String base64Code,String savePath) throws Exception {
<span style="white-space:pre">	</span>byte[] buffer =Base64.decode(base64Code, Base64.DEFAULT);
<span style="white-space:pre">	</span>FileOutputStream out = new FileOutputStream(savePath);
<span style="white-space:pre">	</span>out.write(buffer);
<span style="white-space:pre">	</span>out.close();
}

3、将图片转为Base64

public static String getBitmapByte(Bitmap bitmap){  
		
	bitmap = compressImage(bitmap);
		
	ByteArrayOutputStream out = new ByteArrayOutputStream();  
	bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);  
	try {  
		out.flush();  
		out.close();  
	} catch (IOException e) {  
		e.printStackTrace();  
	}  
	return Base64.encodeToString(out.toByteArray(), Base64.DEFAULT);
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值