语言中是否有将二进制字符串转换为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)并得到同样的错误。
答案 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);
}
答案 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更改为所需的任何内容即可。