-module(binary). -export([encode_hex/1, decode_hex/1]). encode_hex(Bin) when is_binary(Bin) -> encode_hex(Bin, <<>>). encode_hex(<<>>, Acc) -> Acc; encode_hex(<>, Acc) -> A = encode_hex_digit(A0), B = encode_hex_digit(B0), encode_hex(Rest, <>). encode_hex_digit(Char) when Char =< 9 -> Char + $0; encode_hex_digit(Char) when Char =< 15 -> Char + $A - 10. decode_hex(Bin) when is_binary(Bin) -> decode_hex(Bin, <<>>). decode_hex(<<>>, Acc) -> Acc; decode_hex(<>, Acc) -> A = decode_hex_char(A0), B = decode_hex_char(B0), decode_hex(Rest, <>). decode_hex_char(Char) when Char >= $a, Char =< $f -> Char - $a + 10; decode_hex_char(Char) when Char >= $A, Char =< $F -> Char - $A + 10; decode_hex_char(Char) when Char >= $0, Char =< $9 -> Char - $0.