1

我正在尝试使用 Erlang 获取我的 IP 地址。

我从这里找到了这个例子:Erlang: Find my IP Address

local_ip_v4() ->
    {ok, Addrs} = inet:getifaddrs(),
    hd([Addr || {_, Opts} <- Addrs, {addr, Addr} <- Opts, size(Addr) == 4, Addr =/= {127,0,0,1}]).

但它返回一个像这样的值:{127,0,0,1}

我希望它返回一个像这样的值:"{127,0,0,1}"带双引号 ( "") 因为我想用来re:replace更改,..

我怎样才能做到这一点?

4

2 回答 2

12

如果要将 IP 地址转换为字符串,可以使用以下函数inet:ntoa/1

> inet:ntoa({127, 0, 0, 1}).
"127.0.0.1"

作为奖励,它还可以处理 IPv6 地址:

> inet:ntoa({0,0,0,0,0,0,0,1}).
"::1"
于 2016-03-15T12:34:30.200 回答
4

该函数返回元组,因为这是 erlang 代码可以本地处理的。您可能想要做的是将此元组转换为字符串,然后应用字符串操作。有关如何执行此操作的详细信息,请参见将 erlang 术语转换为字符串或解码 erlang 二进制文件

于 2016-03-15T12:31:24.027 回答