首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

erlang中十进制和二进制十六进制的转换算法

2012-09-16 
erlang中10进制和二进制十六进制的转换算法因为erlang中经常会用到二进制,为了方便观察数据,现在写了10进

erlang中10进制和二进制十六进制的转换算法

因为erlang中经常会用到二进制,为了方便观察数据,现在写了10进制转为2进制以及10进制转为16进制的算法,以备调用:

?

10进制转2进制:

?

?

-module(de2Binary). ?

-export([de2Binary/1]).?

?

tempData([0])-> []; ?

tempData([Num]) ->

?? ?Result = Num band 1, ? ??

?? ?integer_to_list(Result) ++ tempData([Num bsr 1]). ?

?

de2Binary(Num)-> ?

?? ?BinaryList = lists:reverse(tempData([Num])),

?? ?LoopTimes = length(BinaryList) rem 8,

?? ?if LoopTimes > 0 -> addBlank(BinaryList,8 - LoopTimes);

?? ? ? true -> BinaryList

?? ?end.

?

addBlank(BinaryList,0) -> BinaryList;

addBlank(BinaryList,Times) ->

?? ?addBlank("0" ++ BinaryList,Times-1).

?

?

10进制转16进制:

?

?

-module(de2Hex). ?

-export([de2Hex/1]).?

?

tempData([0])-> []; ?

tempData([Num]) ->

?? ?Temp = Num band 15, ?

?? ?if ?

?? ? ? ?Temp >= 0,Temp < 10 -> Result = Temp + 48; ?

?? ? ? ?Temp >= 10,Temp < 16 -> ?Result = Temp + 55 ? ? ? ? ?

?? ?end, ?

?? ?[Result | tempData([Num bsr 4])]. ?

?

de2Hex(Num)-> ?

?? ?lists:reverse(tempData([Num])). ?

?

不过最近发现了erlang模块早已支持十进制和其他进制的转换算法:

erlang:integer_to_list(Data,Type).

例如:如果希望将十进制整数1023转换为2进制,可以用

erlang:integer_to_list(1023,2),得到结果为字符串:“1111111111"

热点排行