admin 管理员组文章数量: 1086866
C语言笔记:进制转换与32位二进制IP地址转换十进制问题
问题描述:
假设需要编写一个程序,实现32位二进制IP地址(32个字符长的1和0)转换为点分十进制格式并输出。IP地址的点分十进制格式通过将32位从低位到高位(右到左)一次分组八位,总共分4次,任何8位二进制数对应的十进制数都是IP地址的有效部分。
C语言实现代码:
/*
问题描述:
假设正在读取表示IP地址的字节流,任务是将32个字符长的1和0(位)序列转换为点分十进制格式,IP地址的点分十进制
格式是通过将32位字节流一次分组8位,并将二进制表示转换为十进制表示形式
*/
#include <stdio.h>
#include <string.h>
#define base 2
int main(void)
{int n;printf("请输入需要将32位二进制IP地址转化为点分十进制格式的数量:");scanf("%d",&n);for(int i=0;i<n;i++){char s[40];int sum=0,flag=0;//flag为控制分隔符"."的输出 scanf("%s",s);for(int j=0;j<strlen(s);j++){sum=sum*base+s[j]-'0';//此处是重点,每8位二进制数转换为十进制数if(j%8==7)//当j=7,15,23,31时开始输出 {if(flag){printf(".");//输出第一个八位二进制对应的十进制数时,不输出"."}printf("%d",sum);sum=0;//sum置零,运算第二个八位二进制对应的十进制数 flag=1;//从第二个开始输出"." }}printf("\n");}return 0;
}
输出结果:
本文标签: C语言笔记进制转换与32位二进制IP地址转换十进制问题
版权声明:本文标题:C语言笔记:进制转换与32位二进制IP地址转换十进制问题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1688025222a170191.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论