将IP地址从C字符串转换为无符号整数?

4

我有一个问题:我有一个IPv4地址的C字符串(比如"192.168.0.1"),我想将它转换为uint32_t类型。我相信应该有一些函数可以实现这个功能,但我还没有找到。有什么想法吗?


uint32_t 不是地址类型的合适选择。现代软件必须支持IPv6,因为这已经是2011年了。将地址存储为字符串以进行任何数据交换,并在 getaddrinfo 返回的 struct addrinfo * 中用于内部用户。 - R.. GitHub STOP HELPING ICE
1个回答

10

这个函数叫做inet_aton

int inet_aton(const char *cp, struct in_addr *inp);

<netinet/in.h>中定义了结构体in_addr:

typedef uint32_t in_addr_t;

struct in_addr {
    in_addr_t s_addr;
};
当然,你也可以使用更新的函数 inet_pton

inet_aton函数不是将char*转换为sockaddr结构体吗? - KaiserJohaan
2
@KaiserJohaan 是的,在其中你会找到 s_addr,它是 unit32_t - cnicutar
说到Windows,我猜你只能使用inet_addr?因为在Windows中似乎没有定义inet_aton。 - KaiserJohaan
1
@KaiserJohaan Windows有inet_pton函数。 - cnicutar
哎呀,我猜那是一个大于等于Vista的问题 ;) - rem7
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接