【发布时间】:2014-02-03 11:51:24
【问题描述】:
我需要测试一个文件是否是 ELF 文件,为此,我必须比较前四个字节。文件的第一个字节以0x7F 0x45 0x4C 0x46 开头。
我使用 fread(...) 将前四个字节读入一个数组。打印数组的内容表明该文件包含上面描述的十六进制数字。
我尝试了一些简单的方法来比较每个字节与十六进制代码,像这样
if(bytes[0] != "0x7f" || bytes[1] != "0x45 ....) printf("Error, not ELF file")
但据我了解,我无法以这种方式比较字节。我应该以哪种方式比较数组中的内容以使其正确?
【问题讨论】:
-
我在您的比较中看到的唯一问题是您将字节值视为字符串。删除引号。
-
if(!memcmp(bytes, "\x7F\x45\x4C\x46", 4))