需求:在安卓移动端和服务器进行数据交互的时候,有些时候需要上传,下载文件。如果所有的参数都变成字符串,会更加方便。

原理:Base64只是把byte[]数组进行了编码,然后再解码的过程,文档内容无法直接读取。从某些方面来说,进行了“加密”。经过测试一张图片转变成字符串大概会较少1半的大小。

其实我个人觉得不使用Base64 自己通过getByte()和new String() 应该也没问题。编码的格式只要是不会丢失数据的即可。

对于class对象,我们也可以通过ObjectOutputStream和ObjectInputStream来实现。这样都可以转变成字符串的方式进行传输。

下面是一个Demo,如何把一个图片转变成字符串;把字符串转变成图片。

package com.itheima.base64demo_8;

import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream; import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.util.Base64;
import android.view.Menu;
import android.widget.ImageView; public class MainActivity extends Activity { private ImageView mIv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mIv = (ImageView) findViewById(R.id.iv); // 1.从drawable-hdpi得到一个图片
Bitmap sourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bbb); // 2.转换成byte[]
ByteArrayOutputStream out = new ByteArrayOutputStream();
sourceBitmap.compress(CompressFormat.JPEG, 100, out);
byte[] sourceBitmapByteArr = out.toByteArray();
// 3.base64-->string
String bitmapString = Base64.encodeToString(sourceBitmapByteArr, Base64.DEFAULT);
System.out.println("bitmapString: " + bitmapString); // 4.base64-->string-->byte[]
byte[] bitmapDecodeByteArr = Base64.decode(bitmapString, Base64.DEFAULT); // 5.byte[]-->bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapDecodeByteArr, 0, bitmapDecodeByteArr.length); // 6.bitmap设置为mIv的src,验证是否可以这样进行传递
mIv.setImageBitmap(bitmap); } }

整体来说没什么难点。

Base64技术:把对象转变成字符串的更多相关文章

  1. js 将json对象转成字符串

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 前台 JSON对象转换成字符串 相互转换 的几种方式

    在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ ...

  3. js将对象转成字符串-支持微信

    最近写一个微信项目时用到了 把对象转成字符串,因为我需要把它存在cookie中,碰到了一些问题,在这里分享一下. 要转换的就是这货~ var FBinf = { "workPlacesCod ...

  4. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值

    一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...

  5. js中对象转化成字符串、数字或布尔值的转化规则

    js中对象可以转化成 字符串.数字.布尔值 一.对象转化成字符串: 规则: 1.如果对象有toString方法,则调用该方法,并返回相应的结果:(代码通常会执行到这,因为在所有对象中都有toStrin ...

  6. Javascript里面的时间处理:将时间戳或时间对象转成字符串格式

    问题背景:想把一个时间直接转成字符串格式 通过查api发现有个toLocaleString(),根据本地时间格式,把 Date 对象转换为字符串 new Date().toLocaleString() ...

  7. 如何将javascript对象转换成字符串

    将后台程序(如php)发送过来的json数据转化为javascript的数组或者对象的方法十分简单,代码如下: 1 // 假设后台发送的json数据为 '{a:2,b:1}' 存储于str中 2 va ...

  8. JSON对象转换成字符串【JSON2.JS】

    下载地址 https://github.com/douglascrockford/JSON-js JSON.JS和JSON2.JS的区别 JSON.JS使用的方法名称不同,用的是toJSONStrin ...

  9. vue中如何将时间对象转换成字符串

    借鉴element-admin中封装好的方法 import { parseTime } from '@/utils'// 在utils目录下的index.js文件中,方法如下 /** * Parse ...

随机推荐

  1. HDOJ-1051 Wooden sticks(贪心)

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. react使用map生成的元素,key的设定不对导致每次删除都删除最后一个

    假设 你的key设置为map中的索引,假设为0,1,2(原dom树),现在你用splice删除掉1,重新渲染时,还是会按map索引按顺序渲染为0,1(新dom树),由于react渲染机制是比较的key ...

  3. php常用数学函数

    php常用数学函数1. bcadd 任意精度数的相加2. bcsub 任意精度数的减法3. bcmul 乘法, bcdiv除法 4. bcmod 取余数. (比%功能更强大)5. bcpow 幂函数运 ...

  4. Enhancing Reliability and Response Times via Replication in Computing Clusters---INFOCOM 2015

    [标题] Enhancing Reliability and Response Times via Replication in Computing Clusters [作者] Zhan Qiu an ...

  5. jQuery(7)——jQuery与Ajax的应用

    ---恢复内容开始--- jQuery与Ajax的应用 [Ajax的优势和不足] 优势 (1)不需要插件支持: (2)优秀的用户体验: (3)提高Web程序的性能: (4)减轻服务器和宽带的负担: 不 ...

  6. Ubuntu 14.0 升级内核到指定版本

    1.卸载现有内核sudo apt purge linux-headers-* linux-headers-*-generic linux-image-*-generic linux-image-ext ...

  7. hdfs格式化hadoop namenode -format错误

    在对HDFS格式化,执行hadoop namenode -format命令时,出现未知的主机名的问题,异常信息如下所示: [shirdrn@localhost bin]$ hadoop namenod ...

  8. 分布式版本控制系统Git-----7.Git 使用git rebase合并多次commit

    将多次commit合并,只保留一次提交历史. PS:在我练习的时候,将一个文件的代码做了多次修改,而且每次修改都给提交了,这几次改动的目的都一样,比如说修改RADEME.md,但是每次改动的只是一个小 ...

  9. 一个简单的jQuery插件开发实例

    两年前写的一个简单的jQuery插件开发实例,还是可以看看的: <script type="text/javascript" src="jquery-1.7.2.m ...

  10. L2-007. 家庭房产

    L2-007. 家庭房产 题目链接:https://www.patest.cn/contests/gplt/L2-007 并查集 初学,看这题的时候完全没有什么好的想法,参考了@yinzm的blog用 ...