将二进制转换为字符串,仅转换前8位 使用C++。我的代码要求用户输入一个字符串,将该字符串以二进制形式打印回用户,提示用户输入一些二进制文件,然后将该二进制文件转换回字符串。在测试代码时,我输入一个类似bed的字符串,然后在returns me中重新输入二进制文件。当它转换回二进制时,我将以bbb结束,因此它返回前8位*8的段

将二进制转换为字符串,仅转换前8位 使用C++。我的代码要求用户输入一个字符串,将该字符串以二进制形式打印回用户,提示用户输入一些二进制文件,然后将该二进制文件转换回字符串。在测试代码时,我输入一个类似bed的字符串,然后在returns me中重新输入二进制文件。当它转换回二进制时,我将以bbb结束,因此它返回前8位*8的段,c++,string,loops,binary,C++,String,Loops,Binary,有没有解决这个问题的建议?似乎我的a变量开始返回到0。我试过int a=z;。。。。。它只打印前8位的bed->binary->b 我的代码是: #include <iostream> #include <string> #include <cmath> #include <bitset> using namespace std; int main() { string stuff; cout << "type some stuff

有没有解决这个问题的建议?似乎我的a变量开始返回到0。我试过int a=z;。。。。。它只打印前8位的bed->binary->b

我的代码是:

#include <iostream>
#include <string>
#include <cmath>
#include <bitset>

using namespace std;

int main()
{
string stuff;
cout << "type some stuff :" << endl;
getline(cin, stuff);
int convert = 0, 
toconvert = 0;


for(int i = 0; i < stuff.length(); i++)
{
    cout << bitset<8>(stuff.at(i));

}

string retype;
cout << "type in some sweet binary:" << endl;
getline(cin, retype);
char mycharacter;
for(int z = 0; z < retype.length(); z += 8 )
{

        for(int a = 0; a < retype.length(); a++)

        {
            if (retype.at(a) == '1' )
            {


            convert = (int)pow( 2,( 7- a));

                toconvert = toconvert + convert;  

            }

            else if (retype.at(a) == '0')

            {
                toconvert = toconvert + 0;  
            }

            else
            {       
                cout << "you did not type binary, try again" << endl;
            }        
}
        mycharacter = char(toconvert);
        cout << mycharacter;
        toconvert = 0;      

}

cout << "  " << endl;
return 0;
}

位集是一个模板,该模板的参数是位的数量。。您有std::位集。为什么不直接使用std::bitset来进行从和到的转换呢?EX:我想你可能想考虑你的输入,在最终转换为8比特-PAR-CHAR的值,需要转换回8BITS Per-Char。你的循环限制需要改进。它从零开始,因为这正是a循环的起点;反复地不太确定你想用toconvert=toconvert+0完成什么;toconvert=toconvert+0;使我试图求和的小数点只对条目中的1加一个值。我试图通过在内部循环上设置a=z来解决a被设置回零的问题,但没有效果。是的,我明白了,如果重新键入,我会做其他的事情。at…!='0'{cerr WhozCraig,您所做的更改非常有效!我将研究代码以了解您为什么这样做以及为什么这样做。非常感谢。