首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用c lseek()读取偏移量

用c lseek()读取偏移量
EN

Stack Overflow用户
提问于 2017-05-27 10:53:58
回答 1查看 256关注 0票数 0

我得到了一个图像文件img.jpg,并执行了以下操作

strings img.jpg | hexdump -C

这给了我这个输出

现在我需要用c++程序获取相机和日期信息,包括打开、查找和阅读.我的问题是,我怎样才能跳到2015:08:05和我一起呢?

我试着用偏移量0x40,但不知道怎么回事.

编辑:正如在“答案”中指出的,2015年的2应该在2015年,但这段代码不会输出2,而是0。

代码语言:javascript
复制
int rd = lseek(filedesc, 0x49, SEEK_SET);


    if(rd < 0){
        perror("lseek");
        close(filedesc);
        return 1;
    }   

    read(filedesc, &output, 1);

    printf("%d", output);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-27 11:01:41

0x40是表示行开头的地址。2 in 2015在address 0x49中--这是您需要的地址。它的内容是322作为文本。

在每一行中,地址都是这样的,因为行以0x40开头。

0x40 0x41 0x42 ... 0x48 0x49 0x4A 0x4B ... 0x4F。然后开始下一行。

文件中的列是:

  • 左列-行中的第一个地址。
  • 中间栏-每一个地址的内容。
  • 右列-文本表示中每个地址的内容。

当然,您应该检查每个JPG文件的偏移量是否正确。

附加:在strings img.jpg上执行和在img.jpg上执行时,运行img.jpg会给出不同的结果。如果在文件中搜索特定数据,则应该检查cat img.jpg | hexdump -C。那里的偏移量将适合fopen、文件和lseek的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44215960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档