在elang中使用“#”就可以进行进制的转换,不过使用这个进行进制转换的话,只能从2~36进制之间的整数转换成10进制的数据。 使用“#”转换的格式是:base#value。
其中base的取值是2~36之间,value的取值是base进制下的相应数据。看一些例子吧:
- 60> 2#101.
-
5
-
61> 16#cafe.
-
51966
-
62> 36#fanyingfei.
-
1553487963263226
-
63> 16#fanyingfei*16#cafe.
-
* 1: syntax error before: nyingfei
-
63> 36#fanyingfei*16#cafe.
-
80728555498936802316
-
64>
使用这个我们很容易掌握的,下面我想把一个十进制的数据转换成16进制该如何做呢?
- %% test.erl
-
%% Created: 2011-08-02
-
%% Description: get Xen mac
-
-module(test).
-
-date("2011.08.02").
-
-
%%
-
%% Include files
-
%%
-
%%
-
%% Exported Functions
-
%%
- -export([list_to_hex/1]).
-
-
%%
-
%% API Functions
-
%%
- list_to_hex(L) ->
- lists:map(fun(X) -> int_to_hex(X) end, L).
- %%
-
%% Local Functions
-
%%
-
int_to_hex(X) when X < 256 ->
-
[hex(X div 16), hex(X rem 16)].
-
-
hex(N) when N < 10 ->
-
$0+N;
-
hex(N) when N >= 10, N < 16 ->
-
$A+(N-10).
这个程序的测试结果是这样的:
- 75> c(test).
-
{ok,test}
-
76> test:list_to_hex([253]).
-
["FD"]
-
77> test:list_to_hex([16]).
-
["10"]
-
78> test:list_to_hex([18]).
-
["12"]
-
79>
这样的话,我们就用erlang实现了将一个数据转换成16进制。
阅读(1977) | 评论(0) | 转发(0) |