Guest User

Untitled

a guest
Apr 6th, 2021
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. defmodule Binary do
  2. def encode_hex(bin) when is_binary(bin) do
  3. encode_hex(bin, "")
  4. end
  5.  
  6. defp encode_hex("", acc), do: acc
  7.  
  8. defp encode_hex(<<a::4, b::4, rest::binary>>, acc) do
  9. a = encode_hex_digit(a)
  10. b = encode_hex_digit(b)
  11. encode_hex(rest, <<acc::binary, a, b>>)
  12. end
  13.  
  14. defp encode_hex_digit(char) when char <= 9, do: char + ?0
  15. defp encode_hex_digit(char) when char <= 15, do: char + ?a - 10
  16.  
  17. def decode_hex(bin) when is_binary(bin) do
  18. decode_hex(Bin, "")
  19. end
  20.  
  21. def decode_hex("", acc), do: acc
  22.  
  23. defp decode_hex(<<a::8, b::8, rest::binary>>, Acc) do
  24. a = decode_hex_char(a)
  25. b = decode_hex_char(b)
  26. decode_hex(rest, <<acc::binary, a::4, b::4>>)
  27. end
  28.  
  29. defp decode_hex_char(char) when char in ?a..?f, do: char - ?a + 10
  30. defp decode_hex_char(char) when char in ?A..?F, do: char - ?A + 10
  31. defp decode_hex_char(char) when char in ?A..?F, do: char - ?0
  32. end
Advertisement
Add Comment
Please, Sign In to add comment