Binary 如何将二进制值输入到Rust中的向量?
我已经编写了一个简单的ASCII到字符串转换器,但在将其转换为二进制到字符串转换器时遇到了问题 当我尝试输入二进制值时,我得到了一个错误,向量插入跳过了输入中的起始零 这是使用ASCII十进制值的代码:Binary 如何将二进制值输入到Rust中的向量?,binary,rust,Binary,Rust,我已经编写了一个简单的ASCII到字符串转换器,但在将其转换为二进制到字符串转换器时遇到了问题 当我尝试输入二进制值时,我得到了一个错误,向量插入跳过了输入中的起始零 这是使用ASCII十进制值的代码: use std::*; fn main() { println!("AregevDev's binary to string converter!"); println!("Enter a sequence of binary values:"); let mut i
use std::*;
fn main() {
println!("AregevDev's binary to string converter!");
println!("Enter a sequence of binary values:");
let mut int_seq: Vec<u32> = Vec::new();
loop {
let mut it = String::new();
io::stdin()
.read_line(&mut it)
.expect("Failed to read line!");
let num = match it.trim().parse::<u32>() {
Ok(num) => num,
Err(_) => break,
};
int_seq.push(num);
}
println!("Converted string: {}", binary_to_string(&int_seq));
}
fn binary_to_string(vec: &Vec<u32>) -> String {
let mut result = String::new();
for u in vec.iter() {
let ch = char::from_u32(*u).unwrap();
result.push(ch);
}
return result;
}
与零对应的字符在那里,但您看不到它们:
fn main() {
let mut s = String::new();
s.push(char::from(0));
s.push('a');
s.push('b');
println!("Hello, {}!", s);
println!("{:?}", s);
for c in s.chars() {
println!("{}", c as u32);
}
}
我无法显示输出,因为NUL字符也会混淆堆栈溢出编辑器。:-) 与零对应的字符在那里,但您看不到它们:
fn main() {
let mut s = String::new();
s.push(char::from(0));
s.push('a');
s.push('b');
println!("Hello, {}!", s);
println!("{:?}", s);
for c in s.chars() {
println!("{}", c as u32);
}
}
我无法显示输出,因为NUL字符也会混淆堆栈溢出编辑器。:-) 它可能在那里。你就是看不见,因为NUL字符是不可见的。。。。而且它混淆了大多数用C编写的应用程序(我试着复制并粘贴到
hd
):-)当你的代码演示一个问题依赖于手动输入时,这不是一个好主意。它可能存在。你就是看不见,因为NUL字符是不可见的。。。。而且它混淆了大多数用C编写的应用程序(我试着复制并粘贴到hd
):-)如果您的代码演示问题依赖于手动输入,这不是一个好主意。您可以像下面这样构建字符串let s:string=vec![char::from(0),'a','b'].into_iter().collect()
而不是手动按下char
s。您可以在调试模式下打印,尽管'\u{0}'
可能不是一个明显的景象。@ljedrz我想用显示模式来演示不可见性,但同时使用显示和调试模式很好。@Boiethios在这里一个接一个地按下它们更好,因为它更接近OP的代码。你可以像这样构建字符串let s:string=vec![char::from(0),'a','b'].into_iter().collect()
而不是手动按下char
s。您可以在调试模式下打印,尽管'\u{0}'
可能不太明显。@ljedrz我想用显示模式来演示不可见性,但同时使用显示和调试模式很好。@Boiethios在这里一个接一个地按下它们会更好,因为它更接近OP的代码。