C++ 以换行增量返回二进制结果

C++ 以换行增量返回二进制结果,c++,binary,hex,C++,Binary,Hex,我正在尝试将十六进制转换为二进制,其中包含一个文本文件: 3c011001 34300000 8e080000 20090003 11200004 但它在同一行输出二进制: 0011 1100 0000 0001 0001 0000 0001 0011 0100 0011 0000 0000 000 000 1110 0000 000 000 000 000 000 000 000 0010 0000 我想这样退: 0011 1100 0000 0001 0001 0000 0001 0011

我正在尝试将十六进制转换为二进制,其中包含一个文本文件:

3c011001 34300000 8e080000 20090003 11200004

但它在同一行输出二进制:

0011 1100 0000 0001 0001 0000 0001 0011 0100 0011 0000 0000 000 000 1110 0000 000 000 000 000 000 000 000 0010 0000

我想这样退:

0011 1100 0000 0001 0001 0000 0001

0011 0100 0011 0000 0000

等等。。每行十六进制

string hex (string sHex)
{
   string sReturn = "";
   for (int i = 0; i < sHex.length (); ++i)
   {
    switch (sHex [i])
    {
        case '0': sReturn.append ("0000 "); break;
        case '1': sReturn.append ("0001 "); break;
        case '2': sReturn.append ("0010 "); break;
        case '3': sReturn.append ("0011 "); break;
        case '4': sReturn.append ("0100 "); break;
        case '5': sReturn.append ("0101 "); break;
        case '6': sReturn.append ("0110 "); break;
        case '7': sReturn.append ("0111 "); break;
        case '8': sReturn.append ("1000 "); break;
        case '9': sReturn.append ("1001 "); break;
        case 'a': sReturn.append ("1010 "); break;
        case 'b': sReturn.append ("1011 "); break;
        case 'c': sReturn.append ("1100 "); break;
        case 'd': sReturn.append ("1101 "); break;
        case 'e': sReturn.append ("1110 "); break;
        case 'f': sReturn.append ("1111 "); break;
    }
  }
  return sReturn;
  }

int main() {
  ifstream file;
  file.open("MachineCode.txt");
    if (!file.is_open())
  {
    cout << "ERROR";
  } else {
    stringstream strStream;
    strStream << file.rdbuf();
    string contents = strStream.str();
    cout << hex(contents) << endl;

}

return 0;
字符串十六进制(字符串sHex)
{
字符串sReturn=“”;
对于(int i=0;icout我添加了一个新的case,用于检测何时有新行从输入添加到输出

case '\n': sReturn.append ("\n"); break;

case':sReturn.append(“\n”);break;
bytecnt==8
nibblecnt==16
时,您需要修改
hex()
以添加换行符。另一个选项是在
hex()
中提供输出,但这违反了分离的实现和接口。(如果您总是使用8字节空格分隔的输入,那么我也喜欢@drescherjm方法)