fn binary_to_byte_vector(binary_str: &str) -> Result<Vec<u8>, String> {
if binary_str.len() % 8 != 0 {
return Err("Binary string length must be a multiple of 8.".to_string());
}
let mut byte_list = Vec::new();
for chunk in binary_str.as_bytes().chunks(8) {
let chunk_str = std::str::from_utf8(chunk).map_err(|_| "Invalid UTF-8 chunk")?;
let byte = u8::from_str_radix(chunk_str, 2)
.map_err(|_| format!("Invalid binary segment: {}", chunk_str))?;
byte_list.push(byte);
}
Ok(byte_list)
}
fn main() {
let binary_string = "10101110111010101110101001001011";
match binary_to_byte_vector(binary_string) {
Ok(byte_list) => {
print!("Byte List: ");
for byte in byte_list {
print!("{} ", byte);
}
println!();
}
Err(e) => {
eprintln!("Error: {}", e);
}
}
}
/*
run:
Byte List: 174 234 234 75
*/