'commit'
This commit is contained in:
61
GESP/Level4/GESP202309/test.cpp
Normal file
61
GESP/Level4/GESP202309/test.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
const int N = 110;
|
||||
int a[N], al;
|
||||
string s[N];
|
||||
int sl;
|
||||
|
||||
// 2进制转16进制 0011 1100
|
||||
char get(string x) { // x 必须是4位一组的01数字 --> E B A
|
||||
int sum = 0;
|
||||
int base = 1;
|
||||
for (int i = x.size() - 1; i >= 0; i--) {
|
||||
sum += (x[i] - '0') * base;
|
||||
base *= 2;
|
||||
}
|
||||
if (sum >= 10)
|
||||
return (char)(sum - 10 + 'A');
|
||||
return (char)(sum + '0');
|
||||
}
|
||||
|
||||
// x=0000 0111
|
||||
// 0E
|
||||
string getHex(string x) { // 0E FE AC
|
||||
string a = x.substr(0, 4); // 前4个
|
||||
string b = x.substr(4, 4); // 后4个
|
||||
string c;
|
||||
c.push_back(get(a));
|
||||
c.push_back(get(b));
|
||||
return c;
|
||||
}
|
||||
|
||||
int main() {
|
||||
long long n = 987654321012345678;
|
||||
while (n) {
|
||||
int x = n % 2;
|
||||
n /= 2;
|
||||
a[++al] = x;
|
||||
}
|
||||
// 需要添加若干0来完成补位,需要添加多少个?
|
||||
int x = 7 - al % 7;
|
||||
if (al % 7 == 0)
|
||||
x = 0;
|
||||
al += x;
|
||||
|
||||
for (int i = al; i >= 1; i -= 7) { // 每一组
|
||||
string q = "";
|
||||
if (i == 7)
|
||||
q = q + "1";
|
||||
else
|
||||
q = q + "0";
|
||||
for (int j = 0; j < 7; j++) // 每一个
|
||||
q = q + to_string(a[i - j]);
|
||||
|
||||
s[++sl] = q;
|
||||
}
|
||||
|
||||
for (int i = sl; i; i--)
|
||||
cout << getHex(s[i]) << " ";
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user