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]
*/