根据图片头16进制信息判断图片类型

#include <stdio.h>
struct EH {
    char e[32];
    char h[32];
} eh[29]={
    {"Windows Bitmap (bmp)"       ,                         "424D"},
    {"JPEG (jpg)"                 ,                       "FFD8FF"},
    {"MPEG (mpg)"                 ,                     "000001B3"},
    {"MPEG (mpg)"                 ,                     "000001BA"},
    {"Outlook (pst)"              ,                     "2142444E"},
    {"Real Media (rm)"            ,                     "2E524D46"},
    {"Real Audio (ram)"           ,                     "2E7261FD"},
    {"Adobe Photoshop (psd)"      ,                     "38425053"},
    {"CAD (dwg)"                  ,                     "41433130"},
    {"AVI (avi)"                  ,                     "41564920"},
    {"GIF (gif)"                  ,                     "47494638"},
    {"TIFF (tif)"                 ,                     "49492A00"},
    {"MIDI (mid)"                 ,                     "4D546864"},
    {"ZIP Archive (zip)"          ,                     "504B0304"},
    {"RAR Archive (rar)"          ,                     "52617221"},
    {"Wave (wav)"                 ,                     "57415645"},
    {"Quicktime (mov)"            ,                     "6D6F6F76"},
    {"PNG (png)"                  ,                     "89504E47"},
    {"Quicken (qdf)"              ,                     "AC9EBD8F"},
    {"MS Word/Excel (xls.or.doc)" ,                     "D0CF11E0"},
    {"Windows Password (pwl)"     ,                     "E3828596"},
    {"WordPerfect (wpd)"          ,                     "FF575043"},
    {"XML (xml)"                  ,                   "3C3F786D6C"},
    {"HTML (html)"                ,                   "68746D6C3E"},
    {"Rich Text Format (rtf)"     ,                   "7B5C727466"},
    {"Adobe Acrobat (pdf)"        ,               "255044462D312E"},
    {"Windows Media (asf)"        ,             "3026B2758E66CF11"},
    {"Outlook Express (dbx)"      ,             "CFAD12FEC5FD746F"},
    {"MS Access (mdb)"            ,         "5374616E64617264204A"},
};
FILE *f;
static char s[32];
int i,j,c;
int main(int argc,char **argv) {
    if (argc<2 || argc>2) {
        fprintf(stderr,"GuessFileExt according to head bytes.\nUsage: %s filename\n",argv[0]);
        return 1;
    }
    f=fopen(argv[1],"rb");
    if (NULL==f) {
        fprintf(stderr,"Can not open file %s\n",argv[1]);
        return 2;
    }
    for (i=0;i<14;i++) {
        c=fgetc(f);
        if (c==EOF) break;//
        sprintf(s+i*2,"%2X",(unsigned char)c);
        for (j=0;j<29;j++) {
            if (0==strcmp(s,eh[j].h)) {
                printf("%s\n",eh[j].e);
                fclose(f);
                return 0;
            }
        }
    }
    printf("Unknown\n");
    fclose(f);
    return 3;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值