Java Base64.Decoder.decode(byte[] src,byte[] dst) 方法

返回上一级

Java java.util.Base64.Decoder 类提供的 int decode(byte[] src, byte[] dst) 方法将一个 byte[] 类型的使用 Base64 编码过的数据解码为 []byte 类型的字节数据并存入到 dst 字节数组中,返回输入到 dst 字节数组中的数据的长度。

( JAVA > 8 )

方法原型

public int decode(byte[] src,byte[] dst)

使用 Base64 编码方案解码输入字节数组中的所有字节,将结果写入给定的输出字节数组,从偏移量 0 开始。

调用此方法需要确保输出字节数组 dst 有足够的空间来解码输入字节数组中的所有字节。如果输出字节数组不够大,则不会将任何字节写入输出字节数组。

该方法并不是在解码完才把所有解码的数据输入到 dst 字节数组中的,而是一边解码一边输入数据。因此,有种可能。如果输入字节数组不是有效的 Base64 编码方案,则在抛出 IllegalargumentException 之前,某些字节可能已写入输出字节数组。

因为使用 Base64 编码后的数据可能是原来数据的 4-8 倍,所以解码时,申请的 byte[] 长度只要是原数据的长度即可。

参数说明

参数 说明
src 要解码的字节数组
dst 解码后的数据要输出的数组

返回值

写入输出字节数组的字节数

抛出异常

异常 说明
IllegalArgumentException 如果 src 包含了指定编码格式外的字符或者输出字节数组 dst 没有足够的空间则会抛出此异常

范例

下面的代码简单的演示了 byte[] decode(byte[] src) 的使用

Base64Tester.java

import java.util.Base64;
import java.io.UnsupportedEncodingException;

public class Base64Tester {

   public static void main(String args[]) {

      try {

         byte[] base64decoded;

         byte[] base64encoded = "SmF2YSA4IEJhc2U2NCDnvJbnoIHop6PnoIEgLSBKYXZhOOaWsOeJueaApyAtIOeugOWNleaVmeeoiyA=".getBytes("utf-8");

         base64decoded = new byte[base64encoded.length];

         int len = Base64.getDecoder().decode(base64encoded,base64decoded);

         System.out.println(new String(base64decoded, "utf-8"));

      } catch(UnsupportedEncodingException e) {
         System.out.println("异常:" + e.getMessage());
      }
   }
}

运行以上代码,输出结果如下

[yufei@www.twle.cn helloworld]$ javac Base64Tester.java  && java Base64Tester
Java 8 Base64 编码解码 - Java8新特性 - 简单教程

返回上一级

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.