当前位置: 首页 > 知识库问答 >
问题:

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

苏墨竹
2023-03-14

我正在尝试将十六进制转换为二进制,并接收具有以下功能的文本文件:

3c011001 34300000 8e080000 20090003 11200004

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

0011 1100 0000 0001 0001 0000 0000 0001 0011 0100 0011 0000 0000 0000 0000 0000 1000 1110 0000 1000 0000 0000 0000 0000 0010 0000

我想这样退货:

0011 1100 0000 0001 0001 0000 0000 0001

0011 0100 0011 0000 0000 0000 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;

}

共有1个答案

孙自怡
2023-03-14

我添加了一个新案例,它检测输入中何时有新行以将新行添加到输出中。

case '\n': sReturn.append ("\n"); break;
 类似资料:
  • 二进制文件和行结束标记转换 在大多数情况下,Subversion比CVS更好的处理二进制文件,因为CVS使用RCS,它只可以存储二进制文件的完整拷贝,但是,Subversion使用二进制区别算法来表示文件的区别,而不管文件是文本文件还是二进制文件。这意味着所有的文件是以微分的(压缩的)形式存放在版本库。 CVS用户需要使用-kb选项来标记二进制文件,防止数据的混淆(因为关键字解释和行结束转化),他

  • 我有: 产生项目的许多线程 要点: 生成项目比更新GUI快得多 我们可能有很多新项目同时生产 每个项目生产后都必须进行一次GUI更新 如果产品同时发生,所有产品必须只进行一次更新...没有必要多次刷新GUI 我想我正在寻找一些实现二进制信号量的标准结构,其中最大许可数是1,这样工作人员就可以调用多个,而不会相互阻塞,如果调用了一个,那么: 如果GUI线程正在睡眠= 代码应如下所示: 请注意,使用1

  • 从tornado.gen模块文档中我了解到,tornado.gen.Task由tornado.gen.Callback和tornado.gen.Wait组成,每个Callback/Wait对与唯一键关联。。。 因此,上面的代码将从不同的URL获取所有响应。现在我真正需要完成的是在一个http_客户端返回数据时立即返回响应。因此,如果“tornadweb.org”首先返回数据,它应该执行self.w

  • 本文向大家介绍十进制到二进制转换,包括了十进制到二进制转换的使用技巧和注意事项,需要的朋友参考一下 十进制数字也可以转换为二进制格式。要将十进制数转换为二进制数,我们需要将数字除以2,直到达到0或1。然后,在每一步骤中,其余部分将分开存储以形成相反的二进制等效数。 在此算法中,我们将遵循递归方法。这将帮助我们在不使用堆栈数据结构的情况下解决问题。在实现中,我们知道函数的递归将遵循内部堆栈。我们将使

  • 本文向大家介绍C++学习小结之二进制转换,包括了C++学习小结之二进制转换的使用技巧和注意事项,需要的朋友参考一下 一、目的:便于计算机表示,稳定性好,符合逻辑运算,真为1,假为0. 二、各进制表示方法: 2进制:0,1 8进制:0-7 16进制:0-9,A,B,C,D,E,F 二、转换方法: 1.各进制转换为10进制: 从我们最了解的10进制入手。每个数都是10n次方相加。从右到左依次为:a*1

  • 我的情况是,我有一个C类(MyClass),其方法具有以下签名: 其中name是in参数,serialized是out参数。 我通过在“I”文件中进行%extend和%ignore声明来实现它,如下所示: 因此,可以使用类似Java的方法: 但现在我遇到了一个问题,序列化的std::字符串包含二进制数据,包括表示C字符串结尾的“\0”字符,实际上以下代码显示了C中的问题: 上述代码显示: 正如我在