1pub fn hex_encode(bytes: &[u8]) -> String {
13 const HEX: &[u8; 16] = b"0123456789abcdef";
14
15 let mut encoded = String::with_capacity(bytes.len() * 2);
16 for &byte in bytes {
17 encoded.push(HEX[(byte >> 4) as usize] as char);
18 encoded.push(HEX[(byte & 0x0f) as usize] as char);
19 }
20 encoded
21}
22
23#[cfg(test)]
24mod tests {
25 use super::hex_encode;
26
27 #[test]
28 fn encodes_lowercase_hex() {
29 assert_eq!(hex_encode(&[]), "");
30 assert_eq!(hex_encode(&[0xde, 0xad]), "dead");
31 assert_eq!(hex_encode(&[0x00, 0x0f, 0x10, 0xff]), "000f10ff");
32 }
33}