C 编译后整数如何存储在二进制文件中?

C 编译后整数如何存储在二进制文件中?,c,compilation,C,Compilation,我正在尝试创建一个程序,可以修改已编译或等效的文件。问题是要在编译文件中找到不同的值,我设法找到字符串值而不是整数值 到目前为止,我所做的是将一个已编译文件作为输入,生成一个新的文件,该文件是人类可读的,基本上我逐字节读取已编译文件,并将新文件中的每个字节作为位字符串写入,例如,原始文件中的一个值为124的字节在新文件中变为0111100。这似乎工作正常,我能够对人类可读的文件执行反向操作并运行它 包括 包括 int main { 打印Hello world!\n; 返回0; } 例如,如果我编

我正在尝试创建一个程序,可以修改已编译或等效的文件。问题是要在编译文件中找到不同的值,我设法找到字符串值而不是整数值

到目前为止,我所做的是将一个已编译文件作为输入,生成一个新的文件,该文件是人类可读的,基本上我逐字节读取已编译文件,并将新文件中的每个字节作为位字符串写入,例如,原始文件中的一个值为124的字节在新文件中变为0111100。这似乎工作正常,我能够对人类可读的文件执行反向操作并运行它

包括 包括 int main { 打印Hello world!\n; 返回0; } 例如,如果我编译并翻译上面代码的输出文件,我可以找到一个对应于Hello world的位序列\n

但是在下面的代码中,当编译输出文件后对其进行翻译时,我找不到与3000对应的内容,无论是查找整数还是与3000对应的字符串

包括 包括 int main { int x=3000; printf%d,x; 返回0; } 到目前为止,我的猜测是3000是以一种我不知道的方式写的。虽然我在翻译过程中也有可能出错。到目前为止,我试图用以下两个位序列查找3000:

作为整数00001011 10111000 作为字符串00110011 00110000 00110000 00110000
编辑:强调我编译时并没有使用优化标志-O0可能很重要。

您可能在一台英特尔计算机上,它以小端顺序存储整数。您需要搜索以二进制形式写入的10111000 00001011—字节的顺序与以前使用的相反,或者以十六进制字节的顺序搜索0xB8 0x0B。

您可能在一台英特尔计算机上,该计算机以小端顺序存储整数。您需要搜索以二进制形式写入的10111000 00001011—字节的顺序与您之前使用的顺序相反,或者0xB8 0x0B为十六进制字节