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

如何在Rust中实现类似C/C++的ASCII字符转整数操作

Rust中获取ASCII字符对应ASCII码值的方法

在C/C++里,int('a')会返回字符'a'对应的ASCII码值97,Rust里可以通过以下几种方式实现相同效果:

1. 强制类型转换

对于ASCII字符(Unicode标量值0-127),直接用as关键字将char转为u8或i32即可得到对应ASCII码:

let c = 'a';
let ascii_code: u8 = c as u8;
println!("{}", ascii_code); // 输出97

// 转为i32类型
let ascii_i32: i32 = c as i32;
println!("{}", ascii_i32); // 输出97

要注意,非ASCII字符用这种方式转换会出现截断或未定义行为,建议先通过char::is_ascii()判断:

let c = 'ñ';
if c.is_ascii() {
    let code = c as u8;
    println!("ASCII码: {}", code);
} else {
    println!("这不是ASCII字符");
}

2. 安全转换(编译期检查)

使用u8::from(c)可以在编译期就阻止非ASCII字符的转换,更安全:

let c = 'c';
let ascii_code = u8::from(c);
println!("{}", ascii_code); // 输出99

如果尝试转换非ASCII字符,比如u8::from('中'),编译器会直接报错,避免运行时问题。

额外说明:字符转数字(如'5'转5)

如果你的需求是把字符形式的数字转为对应整数(而非ASCII码),要用char::to_digit()方法:

let digit_char = '7';
match digit_char.to_digit(10) {
    Some(digit) => println!("转换结果: {}", digit), // 输出7
    None => println!("不是十进制数字字符"),
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:06:19