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

Posted

技术标签:

【中文标题】如何将标准 IP 地址格式字符串转换为十六进制和长字符串?【英文标题】:How to convert standard IP address format string to hex and long? 【发布时间】:2010-10-04 05:06:54 【问题描述】:

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

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

我在“84.52.184.224”上测试过

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

谢谢!

【问题讨论】:

【参考方案1】:

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

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

您可以使用ntohl() 将网络顺序转换为机器顺序。

【讨论】:

【参考方案2】:

仔细检查以下链接:

http : // msdn.microsoft.com/en-us/library/ms738563(VS.85).aspx

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

返回结果正确,字节按网络字节序排列

84 => 0x54
52 => 0x34
184 => 0xb8
224 => 0xe0
0xe0b83454 => 3770168404

【讨论】:

【参考方案5】:

我认为您可能遇到了字节顺序问题。从手册页:

所有 Internet 地址均按网络顺序返回(字节顺序从 左到右)。返回所有网络号和本地地址部分 作为机器字节顺序整数值。

【讨论】:

我注意到字节顺序是相反的。 e0b83454 - 5434B8E0。感谢您的提示!

以上是关于如何将标准 IP 地址格式字符串转换为十六进制和长字符串?的主要内容,如果未能解决你的问题,请参考以下文章

将十六进制字符串转换为 IP 地址

Python将IP转换为八进制地址

python 将ipv4的格式转换

如何将labview tcp/ip接收到的平化字符串数据还原

[PTA]实验8-2-10 IP地址转换

十进制数字如何转换成IP地址?