Rust如何实现Base64编码解码

在Rust中如何实现Base64的编码和解码?有没有推荐的库可以直接使用?希望能提供一个简单的代码示例说明基本用法。另外,标准库中有没有内置支持,还是要依赖第三方crate?性能方面有什么需要注意的吗?

2 回复

使用base64库,在Cargo.toml添加依赖:

base64 = "0.21"

编码:

use base64::{encode, decode};

let data = b"hello world";
let encoded = encode(data);
println!("{}", encoded); // aGVsbG8gd29ybGQ=

解码:

let decoded = decode(&encoded).unwrap();
println!("{:?}", decoded); // [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]

Rust 可通过 base64 crate 实现 Base64 编码解码。以下是具体方法:

1. 添加依赖Cargo.toml 中添加:

[dependencies]
base64 = "0.21"

2. 编码示例

use base64::{Engine as _, engine::general_purpose};

let data = b"hello world";
let encoded = general_purpose::STANDARD.encode(data);
println!("{}", encoded); // 输出 "aGVsbG8gd29ybGQ="

3. 解码示例

use base64::{Engine as _, engine::general_purpose};

let encoded = "aGVsbG8gd29ybGQ=";
let decoded = general_purpose::STANDARD.decode(encoded).unwrap();
println!("{:?}", decoded); // 输出 [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]

4. 错误处理 解码可能失败:

let result = general_purpose::STANDARD.decode("invalid");
match result {
    Ok(data) => println!("解码成功: {:?}", data),
    Err(e) => println!("解码失败: {}", e),
}

5. 常用配置

  • STANDARD: 标准 Base64
  • URL_SAFE: URL 安全版本
  • STANDARD_NO_PAD: 无填充版本

特点

  • 零拷贝解码(支持直接解码到现有缓冲区)
  • 符合 RFC 4648 标准
  • 性能优化(使用 SIMD 加速)

这是最常用的 Rust Base64 实现方案。

回到顶部