转换IP以进行反向ip查找

was*_*256 4 c string reverse ip-address

我有一个IP地址,例如char *ip = "192.168.1.13"需要将它转换成这个"13.1.168.192" 在C中是否存在适当的可能性,或者我必须通过简单地制作令牌并将它们再次放在一起来自己做?

Som*_*ude 9

您总是可以使用inet_pton它将其转换为二进制形式,使其易于反转,然后转换回文本inet_ntop.


请记住,IPv4地址只是一个32位无符号整数.交换字节周围的字节非常容易.

像这样的东西:

const char ip[] = "192.168.0.1";
char reversed_ip[INET_ADDRSTRLEN];

in_addr_t addr;

/* Get the textual address into binary format */
inet_pton(AF_INET, ip, &addr);

/* Reverse the bytes in the binary address */
addr =
    ((addr & 0xff000000) >> 24) |
    ((addr & 0x00ff0000) >>  8) |
    ((addr & 0x0000ff00) <<  8) |
    ((addr & 0x000000ff) << 24);

/* And lastly get a textual representation back again */
inet_ntop(AF_INET, &addr, reversed_ip, sizeof(reversed_ip));
Run Code Online (Sandbox Code Playgroud)

在此代码之后,变量reversed_ip包含作为字符串的引用地址.


MOH*_*MED 5

int a,b,c,d;
char *ip = "192.168.1.13"
char ip2[16];
sscanf(ip,"%d.%d.%d.%d",&a,&b,&c,&d);
sprintf(ip2, "%d.%d.%d.%d", d, c, b, a);
Run Code Online (Sandbox Code Playgroud)