输出16进制有问题,求调
查看原帖
输出16进制有问题,求调
683780
LIUZHIYU1楼主2023/12/3 12:18
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
unsigned long long int a;
string                 bin, resizeablebin;
string                 tobin(int a) {
    int    aa = a, cnt = 0;
    bool   b;
    string bin = "";
    while (aa != 0) {
        b = aa % 2;
        aa /= 2;
        bin.append(" ");
        bin[cnt++] = (char)(b + '0');
    }
    bin = string(bin.rbegin(), bin.rend());
    return bin;
}


//就是这个函数有问题,其他地方都测试过了
void rsabintosex(string a) {
    int i = 0, b = 0, r = 0;
    for (int i = 0; i < a.size(); i++) {
        if (a[i] == ' ') {
            printf("%02X ", r);
            r = 0;
            continue;
        } else {
            r *= 2;
            r += a[i] - '0';
        }
    }
}

int main() {
    cin >> a;
    bin = tobin(a);
    while (bin.size() % 7 != 0) {
        bin.insert(0, "0");
    }
    for (int i = 0; i < bin.size(); i++) {
        if (i % 7 == 0 && i != 0) {
            if (bin.size() - i < 7) {
                resizeablebin.append(" 0");
            } else {
                resizeablebin.append(" 1");
            }
        } else {
            if (bin.size() - i < 7) {
                resizeablebin.append("0");
            } else {
                resizeablebin.append("1");
            }
        }
        string temp;
        temp = bin[i];
        resizeablebin.append(temp);
    }
    resizeablebin.append(" ");
    rsabintosex(resizeablebin);
}
2023/12/3 12:18
加载中...