was*_*256 4 c string reverse ip-address
我有一个IP地址,例如char *ip = "192.168.1.13"需要将它转换成这个"13.1.168.192"
在C中是否存在适当的可能性,或者我必须通过简单地制作令牌并将它们再次放在一起来自己做?
您总是可以使用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包含作为字符串的引用地址.
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)