C - 2进制转化为16进制
输入一个2进制的数,要求输出该2进制数的16进制表示。在16进制的表示中,A-F表示10-15
Input 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000 Output n行,每行输出对应一个输入。 Sample Input
2 100000 111下面是AC的程序Sample Output
20 7
#include <stdio.h>
#include<iostream>
#include <string.h>
using namespace std;
#define N 10000
#define N2 4
char s[N + 5];
char convert[] = "0123456789ABCDEF";
int main()
{
long n,len,digits,i,k;
scanf("%d",&n);
getchar();
1 while(n--)
{
gets(s + N2);//给这个数组前面开出四个空间进行补零
s[0] = s[1] = s[2] = s[3] = '0';
len = strlen(s + N2); //二进制长度//(s + N2) 即为二进制长度,并不会在原来长度上加四,此时(s + N2)可以理解我 二进制的名字
digits = (len + N2 - 1) / N2;//十六进制长度