我正在尝试将十六进制转换为二进制,并接收具有以下功能的文本文件:
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;
}
我添加了一个新案例,它检测输入中何时有新行以将新行添加到输出中。
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中的问题: 上述代码显示: 正如我在