Std::string转换为Std::bitset,由Std::string表示,反之亦然

std::string to std::bitset represented by std::string and vice-versa

本文关键字:Std string 表示 反之亦然 转换 bitset      更新时间:2023-10-16

现在,现在,这可能有点令人困惑,但我不能想出一个更简单的标题,可以准确地告诉我的意思。我有一个字符串,我希望转换为二进制(每个字符到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转换回原来的?

欢呼,乔伊

你可以使用

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

您可以使用:

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();
}