Erlang中IPv4地址与整数的转换
http://cndenis.github.io
2013-10-29
IPv4地址通常表示为 A.B.C.D, 其中A-D都是0-255之间的整数, 总长为32位, 因此, 可以使用单一个32位无符号整数表示一个IP地址.
Erlang 中可以使用以下方式进行转换:
ip_to_int({A,B,C,D}) ->
<< Int:32 >> = <<A:8, B:8, C:8, D:8>>,
Int.
int_to_ip(Int) ->
<<A:8, B:8, C:8, D:8>> = << Int:32 >>,
{A,B,C,D}.
上面两个函数没考虑溢出的问题, 溢出的部分会被截断, 比如说 A 输入 257 会被视为 1.
用二进制语法进行这种转换实在是优美, 比乘啊除啊好看多了.
blog comments powered by Disqus