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

如何在Rust中将String、str或char转换为ASCII数值?

在Rust中获取String、str、char的ASCII数值

你之前用的to_ascii_lowercase()只是把字符串转成小写形式,并不会输出ASCII数值,下面是针对不同类型的正确实现方式:

1. 处理char类型

单个char可以直接通过as u8转换为对应的ASCII数值,但要注意只有ASCII字符转换后才是正确的ASCII值,非ASCII字符转u8会被截断。示例:

let c = 'A';
let ascii_val = c as u8; // 结果为65
println!("{}", ascii_val);

如果需要确保字符是ASCII类型,可以先做判断:

let c = 'A';
if c.is_ascii() {
    let ascii_val = c as u8;
    println!("ASCII值:{}", ascii_val);
} else {
    println!("该字符不是ASCII字符");
}

2. 处理String或str类型

String和str是字符序列,需要先定位到目标字符(比如第一个字符),再转换为ASCII值:

方式一:通过字符迭代获取(通用安全)

let key: String = String::from("A");
// 获取字符串的第一个字符,unwrap()适用于确定字符串非空的场景
let first_char = key.chars().next().unwrap();
if first_char.is_ascii() {
    let ascii_val = first_char as u8;
    println!("{}", ascii_val); // 输出65
}

方式二:直接取字节(仅适用于纯ASCII字符串)

Rust的String采用UTF-8编码,ASCII字符的UTF-8字节就是它的ASCII数值,所以如果能确定字符串是纯ASCII的,可以直接取字节:

let key: String = String::from("A");
let ascii_val = key.as_bytes()[0]; // 结果为65
println!("{}", ascii_val);

为了避免非ASCII字符串导致错误,建议先做ASCII校验:

let key: String = String::from("A");
if key.is_ascii() {
    let ascii_val = key.as_bytes()[0];
    println!("ASCII值:{}", ascii_val);
} else {
    println!("字符串包含非ASCII字符");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:45:45