Android Android自带的Base64知识总结

    首先,我们简单分析一下为什么要用Base64编码。Base64是网络上最常用的传输8Bit字节代码的编码方式之一。Base64具有不可读性,即所编码的数据不会让人直接看到。Base64只是轻量级的加密,如果想要实现安全加密,需要更复杂的操作。既然Android封装了Base64类,那么我想在Android开发中Base64编码是很常用的。我在以下场景见到过应用Base64编码:1.上传用户头像到服务器,就是将bitmap进行Base64编码,然后以String形式上传;2.保存文件到本地,将文件路径用Base64编码。总之我们想用,随时可以拿来使用。下面就来结合代码看一下Base64编码的实现过程:
首先是用Base64对String数据进行编码:
private String encodeBase64String(String str){
		return Base64.encodeToString(str.getBytes(), Base64.NO_WRAP);
	}
是不是感觉太简单了啊 ,接下来是将编码后的数据再转换成编码前的String数据:
private String getBase64String(String base64Code){
		byte[] datas=base64Code.getBytes();
		return new String(Base64.decode(datas, Base64.NO_WRAP));
	}
Ok,字符串的编码实现了,下面再来看一下Bitmap的实现:
首先还是将Bitmap进行Base64编码:
private String encodeBase64String(Bitmap bit){
		
		ByteArrayOutputStream baos=new ByteArrayOutputStream();
		bit.compress(CompressFormat.JPEG, 50, baos);
		byte[] bytes=baos.toByteArray();
		
		return Base64.encodeToString(bytes, Base64.NO_WRAP);
	}
然后是对解码过后的Base64数据还原成Bitmap:
private Bitmap getBase64Bitmap(String base64Code){
		
		byte[] datas=base64Code.getBytes();
		byte[] bytes=Base64.decode(datas, Base64.NO_WRAP);
		return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
	}
其实还可以对文件进行编码,原理都是相同的,进行Base64编码就是将要编码的数据转换成字节码,然后调用encodeToString(byte[],flag)就哦了;解码的时候先将Base64编码的数据转换成字节码,然后调用Base64.decode(byte[],flag)转换成普通的字节码,最后将这个字节码转换成我们原先的数据就哦了.
最后还是把我所有代码都贴上吧,方便以后阅读:
package com.wj.upload_pic;

import java.io.ByteArrayOutputStream;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Base64;
import android.widget.ImageView;

public class OtherActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ImageView iv=(ImageView) findViewById(R.id.iv_pic);
		
		String base64Str=encodeBase64String("影魔");
		System.out.println(base64Str);
		
		String str=getBase64String(base64Str);
		System.out.println(str);
		
		Bitmap gilrBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.temp);
		String gilrStr=encodeBase64String(gilrBitmap);
		System.out.println(gilrStr);
		
		Bitmap bitmap=getBase64Bitmap(gilrStr);
		iv.setImageBitmap(bitmap);
	}

	private String encodeBase64String(String str){
		return Base64.encodeToString(str.getBytes(), Base64.NO_WRAP);
	}
	
	private String getBase64String(String base64Code){
		byte[] datas=base64Code.getBytes();
		return new String(Base64.decode(datas, Base64.NO_WRAP));
	}
	
	private String encodeBase64String(Bitmap bit){
		
		ByteArrayOutputStream baos=new ByteArrayOutputStream();
		bit.compress(CompressFormat.JPEG, 50, baos);
		byte[] bytes=baos.toByteArray();
		
		return Base64.encodeToString(bytes, Base64.NO_WRAP);
	}
	
	private Bitmap getBase64Bitmap(String base64Code){
		
		byte[] datas=base64Code.getBytes();
		byte[] bytes=Base64.decode(datas, Base64.NO_WRAP);
		return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
	}
}


ok,笔记over!





你可能感兴趣的:(Android起步)