use std::fmt::Write;
use std::num::ParseIntError;
pub fn decode_hex(s: &str) -> Result<Vec<u8>, ParseIntError> {
(0..s.len())
.step_by(2)
.map(|i| u8::from_str_radix(&s[i..i + 2], 16))
.collect()
}
pub fn encode_hex(bytes: &[u8]) -> String {
let mut s = String::with_capacity(bytes.len() * 2);
for &b in bytes {
write!(s, "{b:02x}").expect("failed to encode_hex");
}
s
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_decode() {
let h = decode_hex("04EBCA94D733E399B2DB96EACDD3F69A8BB0F74224E2B44E3357812211D2E62EFBC91BB553098E25E33A799ADC7F76FEB208DA7C6522CDB0719A305180CC54A82E");
println!("{h:?}")
}
#[test]
fn test_encode() {
let h = encode_hex(&[1, 2, 3]);
println!("{h}")
}
}