Erlang输出的md5值是16位二进制的,就算转成list也和我们经常用的32位字符串不一样,这是转换代码:
- -module(md5).
- -compile(export_all).
- md5(S) ->
- Md5_bin = erlang:md5(S),
- Md5_list = binary_to_list(Md5_bin),
- lists:flatten(list_to_hex(Md5_list)).
- list_to_hex(L) ->
- lists:map(fun(X) -> ini_to_hex(X) end, L).
- ini_to_hex(N) when N < 256 ->
- [hex(N div 16), hex(N rem 16)].
- hex(N) when N < 10 ->
- $0 + N;
- hex(N) when N >= 10, N < 16 ->
- $a + (N - 10).