十六进制编辑器的目的是什么?它是一种编程语言,如C或Python,我如何学习编程?另外,有没有办法用二进制代码?我读了一篇关于史蒂夫·乔布斯的自传,有一次我认为他的一个同事不得不用二进制编写一个程序,学习怎么做似乎很酷。我没有解决现实世界的问题,我只是好奇。我对计算机有一个非常基本的了解,所以假装你正在向五年级学生解释这一点。
答案 0 :(得分:0)
系统中的大多数可执行文件都是二进制文件。有时检查二进制内容可能很重要,但只读0和1的大文件是一项相当繁琐的工作。这个想法是每个四个0和1的集团可以用一个十六进制符号表示:0,1,2,3,4,5,6,7,十六进制编辑器将有助于读取任何类型的二进制内容(例如网络上的文件或tcp帧)的任务。但请注意,即使是十六进制,您也需要良好的计算机知识才能理解文件内容。
答案 1 :(得分:0)
我们使用的大多数编程语言都是高级别的,因为它们在机器可以实际识别之前被翻译了好几次。你的CPU实际上执行非常简单的指令,由0和1编码,如添加,逻辑或从存储器地址加载一个数字到寄存器(所以我们可以添加或操纵值),等等。 / p>
那么这个翻译怎么样?好吧,假设你已经在C中编写了一个简单的hello world程序。它需要被转换为机器代码,即所谓的编译过程。在此阶段,您的代码将根据您的特定CPU(程序集)转换为中间语言。这应该是人类可读的机器指令(前面提到的添加,加载等)。然后机器指令进一步转换为0和1。
例如,添加MIPS CPU架构如下:
0000 0000 0010 0010 0001 1000 0010 0000
基本上说,添加存储在寄存器1和2中的值,并将结果放在寄存器3中。
事情很长,所以我们通常不用二进制编写,而是用十六进制编写。四个0和1压缩成一个数字,我们得到:
00 22 19 20
因此,当您在十六进制编辑器中打开可执行文件时,所有这些值都包含上述指令,静态数据,库等。编辑这些值时,假设您知道自己在做什么,可以更改软件的行为。
但是,您不希望以二进制编写程序。这很痛苦。如果您对此感兴趣,我建议您查看汇编以及CPU的工作方式。
您在机器代码中编写的优势可能超过C:
您可以通过自己的工作获得更大的灵活性。您可以在整个程序中管理您的资源,这样您就可以优化所有内容。飞机上的一些时间敏感仪器是用汇编写的。
您可以全面了解该计划的每个部分的运作方式。
缺点: