zoukankan      html  css  js  c++  java
  • base64编码

    将二进制数据转化为64种人眼可识别的字符串a-z, A-Z, 0-9, /, +

    可以将一些二进制文件编码成可识别的字符串

    Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。

    作用:

    有些网站html, 要展示图片, 可以将图片的base64编码集成在网页的html中
    电子邮件发送图片, 会将图片进行base64编码之后再传输

    编码表

     

    示例代码:

    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Base64;
    import android.widget.ImageView;
    
    import java.io.ByteArrayOutputStream;
    
    public class MainActivity extends AppCompatActivity {
    
        private ImageView ivImage;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ivImage = (ImageView) findViewById(R.id.iv_image);
            new Thread() {
                @Override
                public void run() {
                    //对图片进行base64编码
                    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.xxx);
    
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
    
                    //将图片输出到输出流中
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
    
                    //将图片转为字节数组
                    byte[] bytes = out.toByteArray();
    
                    //byte[] encode = Base64.encode(bytes, Base64.DEFAULT);
                    String str = Base64.encodeToString(bytes, Base64.DEFAULT);
    
                    System.out.println("base64:" + str);
    
                    //对base64进行解码
                    byte[] decode = Base64.decode(str.getBytes(), Base64.DEFAULT);
    
                    final Bitmap bitmap1 = BitmapFactory.decodeByteArray(decode, 0, decode.length);
    
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            ivImage.setImageBitmap(bitmap1);
                        }
                    });
    
                }
            }.start();
    
    
        }
    }

    <!--activity_main.xml-->
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.jcf.base64demo.MainActivity">
        <ImageView
            android:id="@+id/iv_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
           />
    </RelativeLayout>
    

     

  • 相关阅读:
    如何在Ubuntu上安装配置和使用Docker
    在Ubuntu 20.04 LTS Focal Fossa上安装Netdata Monitoring
    CG-CTF 480小时精通C++
    IDA 动态调试
    CG-CTF 签到
    CG-CTF WxyVM
    buu 达芬奇 && ROT
    buu firmware
    buu [MRCTF2020]keyboard
    buu signin
  • 原文地址:https://www.cnblogs.com/loaderman/p/6426469.html
Copyright © 2011-2022 走看看