smb_dtyp/
util.rs

1/// Hex octet to value
2const 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
12/// 2-octet hex string (e.g. "1f") to byte value
13pub 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}