如何将标准IP地址格式字符串转换为十六进制和长?

Nik*_*lin 5 c++ format ip-address

有谁知道如何从标准IP地址格式字符串("xxx.xxx.xxx.xxx")获取十进制或十六进制的IP地址?

我试过使用inet_addr()函数,但没有得到正确的结果.

我在"84.52.184.224"测试了它

函数返回3770168404,这是不正确的(正确的结果是1412741344).

谢谢!

Pau*_*xon 24

您刚刚从预期中反转了字节 - 它们处于网络字节顺序

3770168404 = 0xE0 B8 34 54     network byte order
               |         |
                \       /
                 \     /
                  \   /
                   \ /
                   /\
                  /  \   
                 /    \
                /      \
               |        |
1412741344 = 0x54 34 B8 E0     machine order
Run Code Online (Sandbox Code Playgroud)

您可以使用ntohl()从网络订单转换为机器订单.


Jac*_*son 7

htonl,htons,ntohl,ntohs函数可用于在网络和本地字节顺序之间进行转换.