首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::string to std::bitset,由std::string表示,反之亦然。

std::string to std::bitset,由std::string表示,反之亦然。
EN

Stack Overflow用户
提问于 2014-05-02 09:32:24
回答 2查看 1.2K关注 0票数 0

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

代码语言:javascript
运行
复制
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转换回原版呢?

干杯,乔伊

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-02 09:46:47

你可以用这样的方法

代码语言:javascript
运行
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2014-05-02 09:42:42

您可以使用:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23424940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档