Binary Rust中是否有任何东西可以将二进制字符串转换为整数?

Binary Rust中是否有任何东西可以将二进制字符串转换为整数?,binary,integer,rust,Binary,Integer,Rust,我的二进制文件现在以字符串的形式存在,我希望格式化将其作为一个整数,与我将整数格式化为二进制的方式相同:格式化!(“{:b}”,数字) 我有一个更大的二进制字符串,我在循环中从中提取片段,所以让我们假设我的一个片段是: let bin_idx: &str = "01110011001"; 我想将该二进制文件格式化为整数: format!("{:i}", bin_idx); 这会导致编译器错误: 错误:未知格式特征'i` -->src/main.rs:3:21 | 3 |格式!(“{:

我的二进制文件现在以字符串的形式存在,我希望
格式化将其作为一个整数,与我将整数格式化为二进制的方式相同:
格式化!(“{:b}”,数字)

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

let bin_idx: &str = "01110011001";
我想将该二进制文件格式化为整数:

format!("{:i}", bin_idx);
这会导致编译器错误:

错误:未知格式特征'i`
-->src/main.rs:3:21
|
3 |格式!(“{:i}”,bin_idx);
|                     ^^^^^^^

我也试过了,但也出现了同样的错误。

首先,你应该使用;你指的那些已经过时了

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

fn main(){
让bin_idx=“01111001”;
让intval=isize::from_str_radix(bin_idx,2).unwrap();
println!(“{}”,intval);
}

()

我自己做了一个函数,它很有效

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更改为任何您喜欢的替换快捷方式即可。

为什么要使用此快捷方式而不是经过彻底测试的标准库中的快捷方式?1。它适用于rust 2中的所有整数类型。我认为自己编写这个简单函数比寻找可能不存在的东西更容易。它适合所有整数类型-。我不知道这一点。非常感谢。也许我不擅长谷歌ing,因为我没有找到它。而且这个版本在pow和除法循环中的性能也不太理想。相反,乘法和加法会更好。