大数据string八进制转为string十六进制(通过string的二进制)

来源:互联网 发布:wps不能使用数据透视表 编辑:程序博客网 时间:2024/05/29 09:32
int main()
{
string a("055123124543535254554539845934584845945893485394834444428472398479234738");
string b; //二进制
string c; //十六进制
for (auto i = a.size() - 1; i >= 1; --i)
{
for (auto j = stoi(a.substr(i, 1)), z = 0; j != 0 || z < 3; ++z)
{
b = std::to_string(j % 2) + b;
j /= 2;
}
}


if (b.size() % 4)//位零则除去,有1则加零到4位 转换成4位4位的2进制
{
auto i = b.size() % 4;
for (auto j = 0; j < i; ++j)
{
if (stoi(b.substr(j, 1)))
{
for (auto z = 0; z < 4 - i; ++z)
b = std::to_string(0) + b;
}
}
if (b.size() % 4)
b.erase(0, i);
}


for (auto i = 0; i < b.size();)
{
auto n = stoi(b.substr(i, 1)) * 8 + stoi(b.substr(i + 1, 1)) * 4\
+ stoi(b.substr(i + 2, 1)) * 2 + stoi(b.substr(i + 3, 1));
i += 4;
switch (n)
{
case 10:c += "a"; break;
case 11:c += "b"; break;
case 12:c += "c"; break;
case 13:c += "d"; break;
case 14:c += "e"; break;
case 15:c += "f"; break;
default:c += std::to_string(n); break;
}
}
cout << "0x" << c << endl;


return 0;
}
阅读全文
0 0
原创粉丝点击