Преобразовать большую двоичную строку в шестнадцатеричный - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь преобразовать большую двоичную строку (размер 512) в шестнадцатеричное число.Я использую std::bitset.Решения, которые я нашел в Интернете, на самом деле не работают для меня, потому что ullong имеет ограничение 64. В настоящее время я делю строку на подстроки длиной 64 символа и затем преобразую их в шестнадцатеричные, но таким образом я иногда теряю некоторую информацию.Есть ли лучшее решение моей проблемы?

std::string string_to_hex(std::string bin) {
    std::string res = "";
    for (int i = 0; i < 512; i += 64) {
        std::stringstream hex;
        std::bitset<64> set(bin.substr(i, 64));
        hex << std::hex << set.to_ulong();
        res += hex.str();
    }
    return res;
}
...