您的位置:首页 > 其它

ZOJ Problem Set - 2482||IP Address

2015-06-30 20:31 405 查看
IP Address

Time Limit: 2 Seconds Memory Limit: 65536 KB

Suppose you are reading byte streams from any device, representing IP addresses. Your task is to convert a 32 characters long sequence of '1s' and '0s' (bits) to a dotted decimal format.
A dotted decimal format for an IP address is form by grouping 8 bits at a time and converting the binary representation to decimal representation. Any 8 bits is a valid part of an IP address. To convert binary numbers to decimal numbers remember that both
are positional numerical systems, where the first 8 positions of the binary systems are:
2726252423222120
1286432168421
Input

The input will have a number N (1 <= N <= 9) in its first line representing the number of streams to convert. N lines will follow.

Output

The output must have N lines with a doted decimal IP address. A dotted decimal IP address is formed by grouping 8 bit at the time and converting the binary representation to decimal representation.

Sample Input

4

00000000000000000000000000000000

00000011100000001111111111111111

11001011100001001110010110000000

01010000000100000000000000000001

Sample Output

0.0.0.0

3.128.255.255

203.132.229.128

80.16.0.1

#include <stdio.h>
char str[50];
int num[8] = {128, 64, 32, 16, 8, 4, 2, 1};
int main()
{
int n, i;
scanf("%d", &n);
while(n--)
{
scanf("%s", str);
int s[4] = {0};
for(i = 0; i < 32; i++)
{
if(str[i] == '1')
s[i/8] += num[i%8];
}
printf("%d.%d.%d.%d\n", s[0], s[1], s[2], s[3]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: