Assembly 用C语言读取二进制文件,存储32位机器指令

Assembly 用C语言读取二进制文件,存储32位机器指令,assembly,binary,disassembly,arm64,Assembly,Binary,Disassembly,Arm64,我已经浏览了这个网站,但找不到适合我问题的答案。我需要使用fread()读取一个二进制文件(我可以这样做),并将一个32位二进制指令(机器代码)保存到一个整数变量中。我尝试将读取的数据存储到一个无符号字符缓冲数组中,该数组将2个4位十六进制字符存储到缓冲区中的一个数组槽中,如下所示 unsigned char buffer[4]; fread(buffer, sizeof(unsigned char), 4, ptr); 所以这个缓冲区[0-3]返回91 00 0C 22 这会导致一个问题,如

我已经浏览了这个网站,但找不到适合我问题的答案。我需要使用fread()读取一个二进制文件(我可以这样做),并将一个32位二进制指令(机器代码)保存到一个整数变量中。我尝试将读取的数据存储到一个无符号字符缓冲数组中,该数组将2个4位十六进制字符存储到缓冲区中的一个数组槽中,如下所示

unsigned char buffer[4];
fread(buffer, sizeof(unsigned char), 4, ptr);
所以这个缓冲区[0-3]返回91 00 0C 22


这会导致一个问题,如果我尝试将十六进制数字转换为二进制,我在开始时很难将丢失的0合并为小于8的十六进制数字,例如7(111)需要合并为最终的32位整数0111。我知道我可能会添加更多的代码,但必须有一种更简单的方法,只读取32位的机器代码,并直接将其存储到int变量中,或者如果需要的话存储到long-long-int中。如果你能帮助我理解fread函数在读取机器代码时的作用,这样我就能更好地理解如何以我想要的方式存储数据,那就太棒了。提前谢谢。

顺便说一句,我忘了提到我应该构建一个反汇编程序,在那里我得到一个填充了二进制文件的机器代码文件,我应该将它们转换成打印到标准输出的汇编语言语句。我需要把这个基本的读懂,这样我才能牢牢掌握如何将二进制文件解析为32位指令。谢谢,我想您正在寻找一个与这4个字节对应的32位(4字节)字。找出你使用的字节数,并考虑每个字节都在基256中。然后,4字节的答案类似于(以256为基数是什么意思?有没有办法从文件中读取32位,然后将其放入32个1或0的整数变量中?我刚才告诉过你一种方法。每个字节包含256个值中的1个。以256为基数的一个数字。因此,将它们以456=4x10^2+5x10^1+6x10^0的方式进行组合。但以256为基数的字节作为数字除外。“如果您能帮助我理解fread函数在读取机器代码时正在做什么”-
fread(…)
逐字节读取数据。文件中的第一个字节将进入
缓冲区[0]
,第二个字节进入
缓冲区[1]
等。如果要读入
int变量,则直接读入整数
uint32\u t var;fread(&var,sizeof(var),1,pFile);