c - 使用winsock.h将整数转换为ipv4

标签 c windows ipv4

我有一个问题,关于使用union库winsock.h将数字转换为ipv4地址怎么写?

#ifdef obsolete
        union {
                struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
                struct { u_short s_w1,s_w2; } S_un_w;
                u_long S_addr;
        } S_un;

最佳答案

这是一种方法:

S_un addr;

addr.S_addr = htonl( 2655715960 );

printf("%hhu.%hhu.%hhu.%hhu  %hhX:%hhX:%hhX:%hhX \n",
       addr.S_un_b.s_b1, addr.S_un_b.s_b2, addr.S_un_b.s_b3, addr.S_un_b.s_b4,
       addr.S_un_b.s_b1, addr.S_un_b.s_b2, addr.S_un_b.s_b3, addr.S_un_b.s_b4 );

魔数(Magic Number) 2655715960 是您评论中的示例输入值。 代码将打印想要的行:

158.75.2.120  9E:4B:2:78

注意:使用十六进制打印 IPv4 地址并不常见。

注2:使用struct in_addr而不是S_un。因此,您可以使用inet_ntoa函数将IP号码转换为字符串。

关于c - 使用winsock.h将整数转换为ipv4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066670/

相关文章:

c - 为什么 C 编写的库使用这么多结构?

linux - 我的 cloudflare 设置已全部配置但无法正常工作

localhost - localhost 和 0.0.0.0 的 IPV6 是什么?

c++ - 如何在 C++ 程序中使用参数为 "this"的 C 函数?

c - 这个链表实现有什么问题?

javascript - Windows 中 Firefox 的行结束行为不一致

windows - 用于删除 javascript 恶意软件的正则表达式问题

windows - Windows XP SP3 的远程 WMI

python - 检查IP地址版本的最快方法

c - 在 Windows 上使用 gcc 编译时对 'CreateSemaphoreEx' 的 undefined reference