Base64 编码解码 - Base64
# Base64 编码解码 - Base64
简介
Base64
是一种常用的编码方式,使用 64 个 ASCII 字符来表示任意二进制数据。它的核心原理是将三个字节(24 位)的二进制数据划分为四个 6 位的二进制块,每个块映射到一个 Base64 字符集中的字符。由于使用了额外的字符进行填充,Base64 编码后的数据长度比原始数据增加了约 1/3。
# 1. 使用场景
- 数据传输:在需要将二进制数据(如图片、音频)嵌入到文本数据中进行传输时,Base64 是一种广泛使用的编码方式。
- 网络通信:Base64 可以将二进制数据转换为文本,避免在 HTTP 等传输过程中数据因特殊字符而被破坏。
- 数据存储:将二进制数据转换为 Base64 字符串,方便存储在 JSON 或数据库中。
# 2. 主要方法
# 2.1 编码与解码
Base64
提供了静态的 encode
和 decodeStr
方法,分别用于将字符串编码为 Base64 格式,以及将 Base64 编码的字符串解码为原始内容。
# 示例:Base64 编码与解码
import cn.hutool.core.codec.Base64;
public class Base64Example {
public static void main(String[] args) {
// 原始字符串
String originalString = "伦家是一个非常长的字符串";
// 将字符串编码为 Base64
String encodedString = Base64.encode(originalString);
System.out.println("Base64 编码结果: " + encodedString);
// 输出结果: 5Lym5a625piv5LiA5Liq6Z2e5bi46ZW/55qE5a2X56ym5Liy
// 将 Base64 编码的字符串解码为原始内容
String decodedString = Base64.decodeStr(encodedString);
System.out.println("解码结果: " + decodedString);
// 输出结果: 伦家是一个非常长的字符串
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 方法签名:
String encode(String source)
:将字符串编码为 Base64。String decodeStr(String base64)
:将 Base64 编码的字符串解码为原始内容。
- 参数说明:
source
: 需要编码的原始字符串。base64
: 需要解码的 Base64 编码字符串。
- 返回值:
encode
方法返回编码后的 Base64 字符串。decodeStr
方法返回解码后的原始字符串。
- 作用:通过 Base64 编码将二进制数据转换为文本,适用于数据传输和存储场景。
- 实际开发场景:在需要传输图片、音频等二进制数据时,使用 Base64 编码可以将其转换为字符串,方便通过 HTTP、JSON 等传输。
# 3. 其他常用方法
# 3.1 字节数组的编码与解码
除了字符串,Base64
还支持对字节数组的编码与解码。
import cn.hutool.core.codec.Base64;
public class Base64ByteArrayExample {
public static void main(String[] args) {
// 原始字符串
String originalString = "Hello Base64";
// 将字符串转换为字节数组
byte[] byteArray = originalString.getBytes();
// 将字节数组编码为 Base64
String encodedString = Base64.encode(byteArray);
System.out.println("字节数组的 Base64 编码结果: " + encodedString);
// 输出结果: SGVsbG8gQmFzZTY0
// 将 Base64 字符串解码为字节数组
byte[] decodedByteArray = Base64.decode(encodedString);
String decodedString = new String(decodedByteArray);
System.out.println("解码后的字符串: " + decodedString);
// 输出结果: Hello Base64
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- 方法签名:
String encode(byte[] source)
:将字节数组编码为 Base64。byte[] decode(String base64)
:将 Base64 编码的字符串解码为字节数组。
- 参数说明:
source
: 需要编码的字节数组。base64
: 需要解码的 Base64 编码字符串。
- 返回值:
encode
方法返回编码后的 Base64 字符串。decode
方法返回解码后的字节数组。
- 作用:支持对二进制数据(如文件内容、图片数据)的编码与解码,适用于需要处理非文本数据的场景。
# 4. 实际应用场景
- 图片与文件上传:在上传文件或图片时,可以先将其编码为 Base64 字符串,再通过 JSON 或表单传输。
- 数据存储:在数据库中存储图片或其他二进制数据时,Base64 是一种常用的转换方式。
- 加密与解密:在某些简单的加密方案中,Base64 常用于将加密后的数据转换为字符串存储或传输。
# 5. 注意事项
- Base64 编码后的字符串长度比原始数据增加了约 1/3,因此在数据传输或存储时需要注意数据量的增加。
- 虽然 Base64 编码可以用于加密数据,但由于其容易被解码,因此不适合作为加密方案,只适用于编码场景。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08