题目描述
在传输过程中,有时为了数据传输方便,需要对数据进行打包传输。现在要求输入四个字符(只包含小写字母),将这四个字符的ASCII依次排列,排列为一个32位整数的形式进行传输。
输入
第一行包含一个整数N,表示样例个数。
每一行输入四个连续的小写字母。
输出
对于每四个小写字母,需要输出打包为32位整数的结果。
样例输入 复制
1
abcd
样例输出 复制
1633837924
提示
"abcd"中,
a的ASCII二进制编码为 01100001
b的ASCII二进制编码为 01100010
以此类推
所以'abcd'打包为32位无符号整数为
01100001011000100110001101100100
转化为10进制为1633837924
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main(){
int n;
cin>>n;
for(int j=0;j<n;j++){
int list[32];
int bin=0,i=1,j1=0,j2=0,j3=0,j4=0,a2,b2,c2,d2;
int w=7,x=15,y=23,z=31;
int r=0,s=0,t=0;
char a1,b1,c1,d1;
cin>>a1>>b1>>c1>>d1;
a2=(int)a1;
b2=(int)b1;
c2=(int)c1;
d2=(int)d1;
while(a2!=0){
list[0]=0;
bin=a2%2;
list[w]=bin;
a2=a2/2;
j1=j1+i*bin;
i=i*10;
w--;
}
bin=0;
i=1;
while(b2!=0){
list[8]=0;
bin=b2%2;
list[x]=bin;
b2=b2/2;
j2=j2+i*bin;
i=i*10;
x--;
}
bin=0;
i=1;
while(c2!=0){
list[16]=0;
bin=c2%2;
list[y]=bin;
c2=c2/2;
j3=j3+i*bin;
i=i*10;
y--;
}
bin=0;
i=1;
while(d2!=0){
list[24]=0;
bin=d2%2;
list[z]=bin;
d2=d2/2;
j4=j4+i*bin;
i=i*10;
z--;
}
bin=0;
i=1;
for(int p=0;p<32;p++){
r=31-p;
t=pow(2,r);
s=s+t*list[p];
}
cout<<s<<endl;
r=s=t=0;
}
}