将带二进制的字符串转换为int

时间:2014-12-22 16:31:56

标签: binary integer rust

语言中是否有将二进制字符串转换为int的内容?

我的二进制文件现在作为字符串存在,我希望格式化!它与我将int格式化为二进制文件的方式相同:format!("{:b}",number)

我有一个更大的二进制字符串,我正在循环中取出切片,所以让我们假设我的一个切片是:

let bin_idx:&str = "01110011001";

我希望将该二进制格式化为整数:

format!("{:i}",bin_idx);

这会产生编译错误:

error: unknown format trait `i`

我也试过'd'和'你'(http://www.contrib.andrew.cmu.edu/~acrichto/doc/std/fmt/index.html)并得到同样的错误。

2 个答案:

答案 0 :(得分:8)

首先,你应该使用the official docs;你指出的那些已经过时了。

您有一个字符串,不能将字符串格式化为整数。我想你想要的是一个解析器。这是使用from_str_radix的版本:

fn main() {
    let bin_idx = "01110011001";
    let intval = isize::from_str_radix(bin_idx, 2).unwrap();
    println!("{}", intval);
}

playground

答案 1 :(得分:-1)

我自己创建了一个函数,它起作用了!

fn binary_to_u32(s: String) -> u32 {
let mut binary_digit =  s.chars().count();
let mut real_num: u32 = 0;
for c in s.chars() { 
    let mut temp_var = 2u32.pow(binary_digit.try_into().unwrap());
    temp_var /= 2;
    if c == '1'{
        real_num += temp_var;
    }
    binary_digit -= 1;
}
return real_num; }

此外,如果需要任何其他整数大小,只需在文本编辑器中使用一些替换快捷方式将u32更改为所需的任何内容即可。