1const fn _parse_hex(c: u8) -> Result<u8, &'static str> {
3 let c = match c {
4 b'0'..=b'9' => c - b'0',
5 b'a'..=b'f' => c - b'a' + 10,
6 b'A'..=b'F' => c - b'A' + 10,
7 _ => return Err("Invalid hex character"),
8 };
9 Ok(c)
10}
11
12pub const fn parse_byte(b: &[u8], i: usize) -> Result<u8, &'static str> {
14 let res = _parse_hex(b[i]);
15 let lower_byte = match res {
16 Ok(val) => val,
17 Err(e) => return Err(e),
18 };
19 let res = _parse_hex(b[i + 1]);
20 let upper_byte = match res {
21 Ok(val) => val,
22 Err(e) => return Err(e),
23 };
24 Ok((lower_byte << 4) | upper_byte)
25}