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

标签 c++ format ip-address

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

我尝试使用 inet_addr() 函数但没有得到正确的结果。

我在“84.52.184.224”上测试过

函数返回的 3770168404 不正确(正确的结果是 1412741344)。

谢谢!

最佳答案

您刚刚得到的字节与您预期的相反 - 它们在 network byte order

3770168404 = 0xE0 B8 34 54     network byte order
               |         |
                \       /
                 \     /
                  \   /
                   \ /
                   /\
                  /  \   
                 /    \
                /      \
               |        |
1412741344 = 0x54 34 B8 E0     machine order

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

关于c++ - 如何将标准 IP 地址格式字符串转换为十六进制和长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/491060/

相关文章:

c# - C#.Net中使用IP地址和端口号的TCP/IP客户端套接字程序

c - POSIX 正则表达式未编译

似乎无法将客户端地址保存到 sourceMsgs[j]

c++ - 通过 Boost.Chrono 以纳秒分辨率获取时间戳

python - string.format() 在我的脚本中停止正常工作

c++ - 从文本文件中读取整数

audio - WAV 文件和 M4A 文件有什么区别?

python - 在python中转换用户输入

c++ - 在不创建参数对象的情况下解析 constexpr 函数

c++ - 为什么在此代码中S必须是const?