You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Rust将Base64字符串转换为十六进制字符串?

在Rust中将Base64字符串转换为十六进制字符串

在Rust里完成这个转换很直接,通常会用社区维护的base64和hex两个 crate——它们比手动实现更高效且不易出错。

步骤1:添加依赖

先在你的Cargo.toml里加入这两个依赖:

[dependencies]
base64 = "0.21"
hex = "0.4"

步骤2:编写转换逻辑

核心思路是先把Base64字符串解码成字节数组,再将字节数组编码为十六进制字符串,同时处理可能的格式错误。

示例代码:

use base64::engine::general_purpose;
use base64::Engine as _;
use hex::encode;

fn base64_to_hex(base64_str: &str) -> Result<String, Box<dyn std::error::Error>> {
    // 解码Base64字符串为字节数组
    let decoded_bytes = general_purpose::STANDARD.decode(base64_str)?;
    // 将字节数组编码为十六进制字符串
    let hex_str = encode(decoded_bytes);
    Ok(hex_str)
}

fn main() {
    let sample_base64 = "SGVsbG8gV29ybGQh"; // 对应"Hello World!"
    match base64_to_hex(sample_base64) {
        Ok(hex) => println!("转换结果: {}", hex), // 输出: 48656c6c6f20576f726c6421
        Err(e) => eprintln!("转换失败: {}", e),
    }
}

代码说明

  • general_purpose::STANDARD是标准Base64编码引擎,处理常规格式;如果需要兼容URL安全的Base64,改用general_purpose::URL_SAFE即可。
  • hex::encode默认生成小写十六进制字符串,要生成大写的话用hex::encode_upper。
  • 错误处理用Box<dyn std::error::Error>统一捕获Base64解码时的格式错误。

无第三方依赖方案(仅用标准库)

如果不想引入外部 crate,Rust 1.70+的标准库自带了base64模块,十六进制编码可以手动通过格式化实现:

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

fn base64_to_hex_std(base64_str: &str) -> Result<String, Box<dyn std::error::Error>> {
    let decoded_bytes = general_purpose::STANDARD.decode(base64_str)?;
    // 手动将字节格式化为十六进制字符串
    let hex_str = decoded_bytes.iter()
        .map(|b| format!("{:02x}", b))
        .collect();
    Ok(hex_str)
}

fn main() {
    let sample_base64 = "SGVsbG8gV29ybGQh";
    match base64_to_hex_std(sample_base64) {
        Ok(hex) => println!("转换结果: {}", hex),
        Err(e) => eprintln!("转换失败: {}", e),
    }
}

这个方案效率略低于专门的hex crate,但简单场景下完全够用。

内容的提问来源于stack exchange,提问作者SixoneKui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:45:02