Date Category Erlang Tags Erlang

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.

用二进制语法进行这种转换实在是优美, 比乘啊除啊好看多了.