我得到了一个图像文件img.jpg,并执行了以下操作
strings img.jpg | hexdump -C
现在我需要用c++程序获取相机和日期信息,包括打开、查找和阅读.我的问题是,我怎样才能跳到2015:08:05和我一起呢?
我试着用偏移量0x40,但不知道怎么回事.
编辑:正如在“答案”中指出的,2015年的2应该在2015年,但这段代码不会输出2,而是0。
int rd = lseek(filedesc, 0x49, SEEK_SET);
if(rd < 0){
perror("lseek");
close(filedesc);
return 1;
}
read(filedesc, &output, 1);
printf("%d", output);发布于 2017-05-27 11:01:41
0x40是表示行开头的地址。2 in 2015在address 0x49中--这是您需要的地址。它的内容是32和2作为文本。
在每一行中,地址都是这样的,因为行以0x40开头。
0x40 0x41 0x42 ... 0x48 0x49 0x4A 0x4B ... 0x4F。然后开始下一行。
文件中的列是:
当然,您应该检查每个JPG文件的偏移量是否正确。
附加:在strings img.jpg上执行和在img.jpg上执行时,运行img.jpg会给出不同的结果。如果在文件中搜索特定数据,则应该检查cat img.jpg | hexdump -C。那里的偏移量将适合fopen、文件和lseek的结果。
https://stackoverflow.com/questions/44215960
复制相似问题