std :: string到std :: bitset由std :: string表示,反之亦然

时间:2014-05-02 09:32:25

标签: c++ string binary bitset

现在 - 现在这可能有点令人困惑,但我无法想出一个更简单的标题,可以准确地说明我的意思。我有一个字符串,我希望转换为二进制(每个字符到16位宽度二进制)STRING。然后将二进制字符串返回到原始字符串。我将字符串转换为二进制文件"字符串"。

没有问题
std::string original = "The lazy fox jumped upon the fancy fence.";
std::stringstream bStream;
for (int i = 0, iMAX = original.size(); i < iMAX; ++i) {
    bStream << std::bitset<16>(original[i]);
}
std::string binaryString = bStream.str();

如何将此binaryString转换回原始版本?

干杯,  乔伊

2 个答案:

答案 0 :(得分:1)

您可以使用:

std::string originalBack = ""; // result saved there
for (int i = 0; i < binaryString.size() / 16; i++) // take 16 bits each time
{
    std::string temp = binaryString.substr(i * 16, 16);
    std::bitset<16> temp2(temp);
    originalBack += temp2.to_ulong();
}

答案 1 :(得分:1)

您可以使用类似

的内容
std::string bin2str(std::string t_)
{
    std::stringstream bStream(t_);
    std::string ret;
    std::bitset<16> t;
    while(bStream >> t) {
        ret += static_cast<char>(t.to_ulong());
    }
    return ret;
}