How to convert a hex to a byte vector in Rust

2 Answers

0 votes
fn hex_to_bytes(hex_string: &str) -> Result<Vec<u8>, String> {
    if hex_string.len() % 2 != 0 {
        return Err("Hex string must have an even number of characters".to_string());
    }
 
    let mut bytes = Vec::new();
    for i in (0..hex_string.len()).step_by(2) {
        let hex_pair = &hex_string[i..i + 2];
        match u8::from_str_radix(hex_pair, 16) {
            Ok(byte) => bytes.push(byte),
            Err(e) => return Err(format!("Invalid hex character: {}", e)),
        }
    }
    
    Ok(bytes)
}
 
fn main() {
    let hex_string = "1A2B3C4D";
     
    match hex_to_bytes(hex_string) {
        Ok(byte_vector) => println!("{:?}", byte_vector),
        Err(e) => println!("Error: {}", e),
    }
}
 
 
/*
run:
 
[26, 43, 60, 77]
 
*/

 



answered Feb 15, 2025 by avibootz
edited Feb 15, 2025 by avibootz
0 votes
fn main() {
    let hex_string = "1A2B3C4D";
    
    let bytes: Vec<u8> = (0..hex_string.len())
        .step_by(2)
        .map(|i| u8::from_str_radix(&hex_string[i..i+2], 16).unwrap())
        .collect();

    println!("{:?}", bytes);
}

 
 
/*
run:
 
[26, 43, 60, 77]
 
*/

 



answered Feb 15, 2025 by avibootz

Related questions

1 answer 104 views
2 answers 110 views
1 answer 102 views
102 views asked Jan 27, 2025 by avibootz
1 answer 140 views
2 answers 132 views
132 views asked Nov 19, 2024 by avibootz
...