实验8-2-10 IP地址转换(20 分) 一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。 输入格式: 输入在一行中给出32位二进制字符串。 输出格式: 在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。 输入样例: 11001100100101000001010101110010 输出样例: 204.148.21.114 #include<stdio.h> #include<string.h> #include<math.h> #define N 10 //字符个数 #define M 4 //分的组数 //思路:使用二位字符数组保存下来输入的32位数字,然后对每一行进行字符到数字的转换 // 其中应用到:数字字符的ASCII码值与数字之间的转换,注意相差十进制的48, // 即计算机中的 ‘0’的ASCII码值为48,(字符0)‘0’ - 48(十进制) == 0(十进制的0) int main() { int i, j, k=0, len1=0; char str[M][N]; char ch; int sum[M] = {0}; //每一组数字初始化为0 for (i = 0; i < M; i++) //输入字符串,使用二维字符数组保存 { for (j = 0; j < 8; j++) { ch = getchar(); str[i][j] = ch; } } for (i = 0; i < M; i++) //处理每一组的8位二进制字符,使用一维整形数组保存其和 { k = 0; for (j = 8; j > 0; j--) { sum[i] += (str[i][j-1]-48) * pow(2, k); //字符'0'的ASCII码值是48 k++; } } for (i = 0; i < M; i++) //打印结果 { printf("%d", sum[i]); if (i != 3) //控制标点 { printf("."); } } printf("\n"); return 0; }
实验8-2-10 IP地址转换(20 分)
猜你喜欢
转载自blog.csdn.net/aa11224488/article/details/80317995
今日推荐
周排行