字符串-06. IP地址转换(20)

来源:互联网 发布:红帽linux系统下载iso 编辑:程序博客网 时间:2024/05/20 02:26
        其实就是 点分十进制的转化, 32位ip地址 , 每8位转换成一个十进制的数字(0-255之间), 所以遍历字符串ip_binary,每八位转化一次。

每次读进来的数都是从最高位开始的,权值从2^7到 2^0递减,数就直接读进来(注意:读进来的是字符,要转成数字)。


#include <stdio.h>#include <math.h>int main(int argc, const char* argv[]){char ip_binary[32];int ip_decimal[4] = {0};int i, j, cnt = 0;gets(ip_binary);/* 每八位转化成一个是十进制数 */for(i = 0; i < 32; i += 8){/* 8个数字,最高位2^7, 最低位2^0*/int power = 7;for(j = i; j < i + 8; j++){ip_decimal[cnt] += (ip_binary[j]-'0') * pow(2, power);power --;}cnt ++;}for(i = 0; i < 4; i++){printf("%d", ip_decimal[i]);if(i < 3)printf(".");}return 0;}




0 0
原创粉丝点击