如何在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
相关产品推荐
相关产品推荐

