水题T,二进制转16进制
Posted stul
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水题T,二进制转16进制相关的知识,希望对你有一定的参考价值。
输入一个2进制的数,要求输出该2进制数的16进制表示。
在16进制的表示中,A-F表示10-15
Input第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000Outputn行,每行输出对应一个输入。Sample Input
2 100000 111
Sample Output
20 7
2进制转换成16进制。
从后面开始,每四位换成一个数,0123456789ABCDEF,不足4位在前面用0补上。
程序一直出问题,因为定义的是char型的数组,所以操作的时候必须用‘0‘ ‘A‘等等。
#include <bits/stdc++.h> using namespace std; char s1[10005]; char convert[] = "0123456789ABCDEF"; int main(){ int n; cin>>n; getchar(); while(n--){ char s3[10000]={0};//存放结果 gets(s1+4); s1[0] = s1[1] = s1[2] = s1[3] = ‘0‘; //令前四位为0 int len1 = strlen(s1); int m = 4; if(len1%4) m = len1%4; int j = 0; for(int i = m; i < len1; i+=4) { s3[j] = convert[(s1[i]-‘0‘)*8 + (s1[i+1]-‘0‘)*4 + (s1[i+2]-‘0‘)*2 + (s1[i+3]-‘0‘)]; j++; } cout<<s3<<endl; } return 0; }
以上是关于水题T,二进制转16进制的主要内容,如果未能解决你的问题,请参考以下文章