#include 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; }