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());
}
}
}
运行以上代码,输出结果如下
[dabaicai@www.cmsblogs.cn helloworld]$ javac Base64Tester.java && java Base64Tester
Java 8 Base64 编码解码 - Java8新特性 - 大白菜博客
最新评论
https://pan.baidu.com/s/1q3bnTncIACKoTZFxvx7BQw?pwd=ii7n
RabbitMQ精讲,项目驱动落地,分布式事务拔高 有吗?
Spring Cloud Alibaba 微服务架构实战 https://pan.baidu.com/s/1jF5voFRoeF0lYAzAPBWSbw?pwd=chqk
命令: nload
真是个良心站点哇,大公无私,爱了爱了
还可以直接搞一张映射表,存 uid | time | source_index, 第一次直接查对应的 time 选出前100, 第二次直接用 CompleteFuture 去分别用 source_in
干得漂亮,多个朋友堵条路
2021.2.2版本的不适用吧