- 论坛徽章:
- 0
|
偶想一段数据转换一下,就像下面那个样子:
211.098.000.000~211.098.127.255 中国铁道电信 ->; (11010011 01100010 00000000 00000000) (11010011 01100010 01111111 11111111) 中国铁道电信
(中间出了点莫名其妙的问题)
代码如下:
- #include <stdio.h>;
- #include <stdlib.h>;
- #include <string.h>;
- int addr[2][4];
- char buffer[100];
- int main(int argc, char *argv[])
- {
- FILE * in, * out;
- int tmp;
- switch(argc)
- {
- case 2:
- out = stdout;
- break;
- case 3:
- if((out = fopen(argv[2],"w")) == NULL)
- {
- printf("export file open error!!");
- exit(2);
- }
- break;
- default:
- printf("input error!!");
- exit(1);
- }
- if((in = fopen(argv[1],"r")) == NULL)
- {
- printf("inport file open error!!");
- exit(2);
- }
- while(feof(in) == 0)
- {
- fscanf(in,"%d.%d.%d.%d~%d.%d.%d.%d %s%*[^\n]",
- &addr[0][0],&addr[0][1],&addr[0][2],&addr[0][3],&addr[1][0],&addr[1][1],&addr[1][2],&addr[1][3],buffer);
- for(int i = 0; i < 8; i++)
- {
- if(4 == i || 0 == i)fprintf(out,"(");
- for(int j = 0; j < 8; j++)fprintf(out,"%d", (addr[i/4][i%4] >;>; (7-j)) & 0x1);
- if(7 == i || 3 == i)fprintf(out,") ");
- else fprintf(out," ");
- }
- fprintf(out,"%s\n",buffer);
- }
-
- fclose(in);
- if(argc == 3)fclose(out);
- printf("complete!!");
- return 0;
- }
复制代码
编译选项如下:
--std=c99
(DEV-CPP 4.9.9.9编译)
运行的时候运行到一半的时候就定在一个位置了
(11001011 11011111 00000000 00000000) (11001011 11011111 11111111 11111111) 中国
(11001011 11011000 00000000 00000000) (11001011 11011000 11111111 11111111) 日本
(11001011 11010000 00001000 00000000) (11001011 11010000 00010010 11111111) 广东深圳讯业金网用户
(11001011 11010000 00000111 00000000) (11001011 11010000 00000111 11111111) 武汉讯业金网用户
(11001011 11010000 00000110 00000000) (11001011 11010000 00000110 11111111) 北京讯业金网用户
(11001011 11010000 00000100 00000000) (11001011 11010000 00000101 11111111) 广东深圳讯业金网用户
(11001011 11010000 00000011 00000000) (11001011 11010000 00000000 11111111) 广东深圳讯业金网用户
(11001011 11010000 00000011 00000000) (11001011 11010000 00000000 11111111) 广东深圳讯业金网用户
(11001011 11010000 00000011 00000000) (11001011 11010000 00000000 11111111) 广东深圳讯业金网用户
(11001011 11010000 00000011 00000000) (11001011 11010000 00000000 11111111) 广东深圳讯业金网用户
就是这样,就定在那了~~~~
下面是一段原始数据
224.000.000.000~224.255.255.255 美国南加利福尼亚大学
217.000.000.000~223.255.255.255 尚未分配
216.244.192.000~216.244.207.255 阿根廷
216.154.000.000~216.154.255.255 加拿大
216.000.000.000~216.255.255.255 美国/加拿大
214.000.000.000~215.255.255.255 美国国防部网络(弗吉尼亚州)
212.216.160.000~212.216.167.255 意大利
212.156.000.000~212.156.193.255 土耳其
212.020.096.000~212.020.111.255 捷克在线
212.000.000.000~213.255.255.255 欧洲
211.098.000.000~211.098.127.255 中国铁道电信
211.094.000.000~211.103.255.255 中国
211.072.000.000~211.075.255.255 台湾
211.069.128.000~211.069.143.255 华中农业大学
211.069.112.000~211.069.119.255 娄底师范高等专科学校
211.069.104.000~211.069.111.255 衡阳师范学院
211.069.096.000~211.069.103.255 郴州师范高等专科学校
211.069.080.000~211.069.095.255 湖南商学院
211.069.072.000~211.069.079.255 湖南第一师范
211.069.000.000~211.069.015.255 河南机电高等专科学校
211.068.240.000~211.068.255.255 天津农学院
211.068.236.000~211.068.239.255 天津体育学院
211.068.232.000~211.068.233.255 中国教育科研网天津主节点
211.068.224.000~211.068.231.255 天津职业大学
211.068.208.000~211.068.223.255 天津外国语学院
211.068.192.000~211.068.207.255 天津音乐学院
211.068.160.000~211.068.175.255 河北建筑工程学院
到底是什么道理嘛~~帮个忙哈 ![](static/image/smiley/default/em03.gif) |
|