How to convert binary digits to a byte vector in Rust

1 Answer

0 votes
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 
   
*/

 



answered Aug 4 by avibootz
...