diff options
Diffstat (limited to 'src/hex.erl')
-rw-r--r-- | src/hex.erl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/hex.erl b/src/hex.erl new file mode 100644 index 0000000..8529f95 --- /dev/null +++ b/src/hex.erl @@ -0,0 +1,33 @@ +-module(hex). +-export([bin_to_hexstr/1,hexstr_to_bin/1]). + +hex(N) when N < 10 -> + $0+N; +hex(N) when N >= 10, N < 16 -> + $a+(N-10). + +int(C) when $0 =< C, C =< $9 -> + C - $0; +int(C) when $A =< C, C =< $F -> + C - $A + 10; +int(C) when $a =< C, C =< $f -> + C - $a + 10. + +to_hex(N) when N < 256 -> + [hex(N div 16), hex(N rem 16)]. + +list_to_hexstr([]) -> + []; +list_to_hexstr([H|T]) -> + to_hex(H) ++ list_to_hexstr(T). + +bin_to_hexstr(Bin) -> + list_to_hexstr(binary_to_list(Bin)). + +hexstr_to_bin(S) -> + list_to_binary(hexstr_to_list(S)). + +hexstr_to_list([X,Y|T]) -> + [int(X)*16 + int(Y) | hexstr_to_list(T)]; +hexstr_to_list([]) -> + []. |