将字符解析为u32

时间:2016-12-29 13:06:17

标签: rust

正如问题所述,我该如何实现这一目标?

如果我有这样的代码:

let a = "29";
for c in a.chars() {
    println!("{}", c as u32);
}

我获得的是2和9的unicode代码点:

  • 50
  • 57

我想要的是将这些字符解析为实际数字。

2 个答案:

答案 0 :(得分:10)

char::to_digit(radix)这样做。 radix表示" base",即十进制系统为10,十六进制为16,等等:

let a = "29";
for c in a.chars() {
    println!("{:?}", c.to_digit(10));
}

它返回Option,因此您需要unwrap()或更好:expect("that's no number!")。您可以在the appropriate chapter of the Rust book中阅读有关正确错误处理的更多信息。

答案 1 :(得分:4)

好吧,你总是可以使用以下hacky解决方案:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

ASCII个数字的编码值为48到57,所以当你有一个包含字符2和9的字符串并尝试将它们解释为整数时,你会得到50和57.要得到它们的预期值,你只需要需要从中减去48个。