赞
踩
这个ip地址互换考的还是比较多的,尤其是你做网络方面的工作的话,这肯定是会问你的。本文主要介绍了一个十进制数与点分十进制的ip地址互换的过程。话不多说,那就开始吧。
思路:将32位中的每8位提取出来变为10进制数,然后通过sprintf到一个字符数组里就可以了
示例一:将前8位提取出来变成10进制数,通过位移运算符,将这32位右移24位,因为源码右移左补零,刚好就成十进制数了
示例二:前9 - 16 位:先左移8位将前8位消掉,再右移24位,如下图所示
#include <iostream> using namespace std; int main() { unsigned int ip = 3487979799; unsigned int n1 = ip >> 24; unsigned int n2 = ip << 8 >> 24; unsigned int n3 = ip << 16 >> 24; unsigned int n4 = ip << 24 >> 24; char ip_str[17] = {0}; sprintf(ip_str, "%d.%d.%d.%d", n1, n2, n3, n4); printf("%s\n", ip_str); return 0; }
这个我通过计算机计算是正确的
通过sscanf把每位的字符串数字提取出来,然后将每一位的数左移到相应的位置,再或起来就可以了
#include <iostream> using namespace std; int main() { unsigned int n1, n2, n3, n4; char ip_str[17] = {"207.230.89.23"}; sscanf(ip_str, "%d.%d.%d.%d", &n1, &n2, &n3, &n4); unsigned int ip = (n1 << 24) | (n2 << 16) | (n3 << 8) | n4; printf("%u\n", ip); return 0; }
结果也是正确的!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。