我有一个问题,关于使用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/