IP地址转换-16进制转化为10进制

来源:互联网 发布:网络上dc是什么意思 编辑:程序博客网 时间:2024/03/28 23:56

很久之前写的,今天放在这里。

1、不含字母

#include <iostream>#include <stdio.h>//8个二进制(2个十六进制)数转换成十进制数,不含a-f。即00-99的转换int transfer_0(int x){int y;//结果int temp;//临时值y=x%10;//个位数temp=(x%100-y)/10;//十位数y+=temp*16;return y;}//32个二进制(4个十六进制)数转换成十进制数,不含a-f。即0000-9999的转换void transfer_1(unsigned int x){//从右向左int temp1=x%100;int y1=transfer_0(temp1);int temp2=(x%10000-temp1)/100;int y2=transfer_0(temp2);int temp3=(x%1000000-temp1-temp2*100)/10000;int y3=transfer_0(temp3);int temp4=(x%100000000-temp1-temp2*100-temp3*10000)/1000000;int y4=transfer_0(temp4);printf("结果是:%d.%d.%d.%d\n",y4,y3,y2,y1);}void main(){unsigned int x;printf("IP地址:");scanf("%d",&x);transfer_1(x);system("pause");}

2、含有字母

#include <stdio.h>#include <iostream>#include <string>using namespace std;//将16进制数数转化成10进制数,一位的0-F。int transfer_0(char x){int y=0;//返回值if (x>='0' && x<='9')//0-9的数字{y=x-'0';return y;}if (x>='a' && x<='f')//a-f的字母{y=x-'a'+10;return y;}if (x>='A' && x<='F')//A-F的字母{y=x-'A'+10;return y;}printf("参数错误!");exit(1);}/*//将16进制数数转化成10进制数,两位的00-FF。int transfer_1(char x[],int n)//长度为2{char s[2];//固定的,长度不变for (int i=0;i<n;i++){s[i]=x[i];}int y1=transfer_0(s[0]);//十位int y2=transfer_0(s[1]);//个位int y=y2+y1*16;return y;}*///尝试一次,尝试删除上面的,哈哈~~//将16进制数数转化成10进制数,八位的00000000-FFFFFFFF。void transfer_2(char x[],int n)//长度为8{//从左往右int y0=transfer_0(x[0]);int y1=transfer_0(x[1]);int y2=transfer_0(x[2]);int y3=transfer_0(x[3]);int y4=transfer_0(x[4]);int y5=transfer_0(x[5]);int y6=transfer_0(x[6]);int y7=transfer_0(x[7]);printf("结果是:%d.%d.%d.%d\n",y0*16+y1,y2*16+y3,y4*16+y5,y6*16+y7);}void main(){char x[9]="";printf("8位的IP地址(十六进制):");//不能有空位cin>>x;transfer_2(x,8);system("pause");}

3、提交版

#include <stdio.h>#include <string>//将16进制数数转化成10进制数,一位的0-F。int transfer_0(char x){int y=0;//返回值if (x>='0' && x<='9')//0-9的数字{y=x-'0';return y;}if (x>='a' && x<='f')//a-f的字母{y=x-'a'+10;return y;}if (x>='A' && x<='F')//A-F的字母{y=x-'A'+10;return y;}printf("参数错误!");exit(1);}//将16进制数数转化成10进制数,八位的00000000-FFFFFFFF。void transfer_2(char x[]){//从左往右int y1=transfer_0(x[0])*16+transfer_0(x[1]);int y2=transfer_0(x[2])*16+transfer_0(x[3]);int y3=transfer_0(x[4])*16+transfer_0(x[5]);int y4=transfer_0(x[6])*16+transfer_0(x[7]);printf("结果是:%d.%d.%d.%d\n",y1,y2,y3,y4);}void main(){char x[9]="";//长度为8printf("8位的IP地址(十六进制):");//不能有空位,只取前8位scanf("%s",&x);transfer_2(x);}

原创粉丝点击