未知类型的文件,怎样判别文件格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未知类型的文件,怎样判别文件格式相关的知识,希望对你有一定的参考价值。

请问这个文件的格式是什么?图中是文件开头的十六进制代码。

码农来也。自己编了一个程序,用起来挺顺手,不错不错,要的话评论区留下邮箱。

效果图

兼容Windows XP、Windows7、Windows10,支持32位和64位操作系统。

参考技术A 除了通用的文件类型,有固定的扩展名。其实还有更多无数的文件类型,是程序员随意定义的私有格式,只有分析读写这个文件的程序的代码,才有可能弄懂文件格式。
另外文件的扩展名,并不能代表文件真正的格式。追问

问题是我不知道用什么读写这个文件。

追答

文件的格式是程序员自己定义!!!
你这个问题没有什么意义,你要是懂软件编程,就知道我为什么这么讲。

追问

这不是程序员自定义的文件格式,看不出来算了。

参考技术B 打开文件容易,读几个字符容易,判断类型较难。
下面程序判断 .exe .jpg .gif 格式
读入的前20个字节在 char s[20] 中。
你愿意把它看成10进制,16进制都可以。

输入形式:
可执行程序名 要判断的文件名
例如:
ccalb.exe file.gif

#include <stdio.h>
#include<stdlib.h>

main(int argc, char *argv[])
FILE *fin;
char namein[80];
char s[20];
if (argc<2)
printf("Usage: \007 %s filename\n",argv[0]);
return 0;

strcpy(namein,argv[1]);
fin = fopen(namein,"rb");
if (!fin)
printf("Open %s error\n",namein);
return 0;

fread(s,20,1,fin);
fclose(fin);
if (s[0]=='M' && s[1]=='Z') printf("It is .exe file\n");
else if (s[6]=='J' && s[7]=='F' && s[8]=='I' && s[9]=='F')printf("It is .jpg file\n");
else if (s[0]=='G' && s[1]=='I' && s[2]=='F' ) printf("It is .gif file\n");
else printf("other file");
return 0;
追问

我问的是图片中的文件的格式是什么,不是问判断文件格式的方法。

以上是关于未知类型的文件,怎样判别文件格式的主要内容,如果未能解决你的问题,请参考以下文章

这些文本格式标记是啥,我怎样才能故意将它们插入另一个文件?

TXT文件怎样转换成UTF格式的?

如何删除取消win7系统文件的“始终使用选择的程序打开这种文件”,让原类别文件恢复默认的未知格式?

nodejs 怎么判断 一个未知格式的buffer 的编码格式

电脑格式

如何查看文件编码格式?