模拟出的答案一直不对,恳求大佬帮忙改正
#include<bits/stdc++.h>
using namespace std;
string a;
void str_To_Hex(string str){
long long sum=0;
for(int i=str.size()-1,k=1;i>=0;i--,k*=2){
sum+=(str[i]-'0')*k;
}
printf("%02X ",sum);
}
int main(){
long long n,k;
cin>>n;
k=n;
while(k){
a.push_back(k%2+'0');
k/=2;
}
cout<<a<<endl;
reverse(a.begin(),a.end());
cout<<a<<endl;
while(a.size()%7) a.insert(a.begin(),'0');
cout<<a<<endl;
a.insert(a.begin(),'0');
for(int i=7;i<a.size()-1;i+=7){
a.insert(a.begin()+i,'1');
i++;
// cout<<a<<" "<<i<<" "<<a.size()<<endl;
}
cout<<a<<endl;
for(int i=a.size();i>0;i-=8){
int st=i-8;
string str;
cout<<st<<endl;
str=a.substr(st,8);
str_To_Hex(str);
cout<<str<<endl;
}
return 0;
}
/* 下附样例的数据参考和我的测试答案
样例:
CE 11001110
98 10011000
C8 11001000
A6 10100110
CB 11001011
B6 10110110
DA 11011010
0D 00001101
1100111010011000110010001010011011001011101101101101101000001101
我的测试答案
4E 01001110
17 00010111
49 01001001
27 00100111
F5 11110101
4B 01001011
37 00110111
DB 11011011
0D 00001101
*/