#include <iostream>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
string s1,s2;
string *s3= new string[n];
int i,j,k;
for(i=0;i<n;i++)
{
s1="";
s2="";
s3[i]="";
cin>>s1;
for(j=0;j<s1.length();j++)
{
switch(s1[j])
{
case'0':s2+="0000";break;
case'1':s2+="0001";break;
case'2':s2+="0010";break;
case'3':s2+="0011";break;
case'4':s2+="0100";break;
case'5':s2+="0101";break;
case'6':s2+="0110";break;
case'7':s2+="0111";break;
case'8':s2+="1000";break;
case'9':s2+="1001";break;
case'A':s2+="1010";break;
case'B':s2+="1011";break;
case'C':s2+="1100";break;
case'D':s2+="1101";break;
case'E':s2+="1110";break;
case'F':s2+="1111";break;
default:break;
}
}
if(s2.length()%3==1)
s2="00"+s2;
if(s2.length()%3==2)
s2="0"+s2;
int p=0;
for(k=0;k<s2.length();k+=3)
{
p=4*(s2[k]-'0')+2*(s2[k+1]-'0')+(s2[k+2]-'0');
s3[i]+=(p+'0');
}
}
for(i=0;i<n;i++)
{
int k=0;
while(s3[i][k]=='0')
k++;
cout<<&s3[i][k]<<endl;
}
delete []s3;
s3=NULL;
return 0;
}
此代码是参考某大神写的,代码中第47行,尝试用p=((s2[k]*2)+s2[k+i])*2+s2[k+2];结果是错误的。
如果去掉53-55行,输出的时候,前边会有一个0。
好好研究吧,不多说了