标签:
#include<iostream> #include<math.h> using namespace std; int main() { char ip[16]; char temp[4][4]; cin>>ip; char *delim=".";//分隔符 char *p; unsigned long i=3;//这儿要注意要把字符串反着存放 strcpy(temp[i--],strtok(ip,delim));//strtok字符串分割成一个个片段。参数s指向欲分割的字符串,delim为分隔符. while(p=strtok(NULL,delim)) { strcpy(temp[i--],p); } unsigned long arr[4]; unsigned long strtemp[4][8]; for(i=0;i<=3;i++)//分别将每个字符串转换为数字 { arr[i]=atoi(temp[i]);//将字符串的值转换为整数 cout<<arr[i]<<" "; } cout<<endl; for(i=0;i<=3;i++) { for(unsigned long j=0;j<=7;j++)//将十进制转换为二进制 { strtemp[i][j]=arr[i]%2; arr[i]=arr[i]/2; cout<<strtemp[i][j]; } cout<<endl; } unsigned long sum=0,result;unsigned long (*q)[8]; //这儿一定要注意sum的类型,我开始写的是long型,最后结果出现的是负值,让我调试了好久!! q=strtemp; unsigned long count=0; for(i=0;i<=3;i++) { for(unsigned long j=0;j<=7;j++) { result=ldexp(*(*(q+i)+j),count++); sum+=result; } } cout<<sum<<endl; return 0; }
标签:
原文地址:http://www.cnblogs.com/leijiangtao/p/4856372.html