summaryrefslogtreecommitdiff
path: root/src/hex.erl
blob: 1eb1e6a572698237d539e58365a4cfccb86f5057 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%%% Copyright (c) 2014, NORDUnet A/S.
%%% See LICENSE for licensing information.

-module(hex).
-export([bin_to_hexstr/1,hexstr_to_bin/1]).

-spec bin_to_hexstr(binary()) -> string().
bin_to_hexstr(Bin) ->
  lists:flatten([io_lib:format("~2.16.0B", [X]) ||
    X <- binary_to_list(Bin)]).

hexstr_to_bin(S) ->
  hexstr_to_bin(S, []).
hexstr_to_bin([], Acc) ->
  list_to_binary(lists:reverse(Acc));
hexstr_to_bin([X,Y|T], Acc) ->
  {ok, [V], []} = io_lib:fread("~16u", [X,Y]),
  hexstr_to_bin(T, [V | Acc]).