• 6405阅读
  • 10回复

识别二进制文件 [复制链接]

上一主题 下一主题
离线jinyxin
 
只看楼主 倒序阅读 楼主  发表于: 2008-09-24
— 本帖被 XChinux 执行加亮操作(2008-09-25) —
在QT下,怎么才能识别一个文件是二进制文件?
离线water_wf

只看该作者 1楼 发表于: 2008-09-24
同问?
离线破烂石头
只看该作者 2楼 发表于: 2008-09-24
以文本方式打开,每次读一个字符,如果读到文件长度的结束之前遇到EOF,则判断为二进制(非文本)文件。
比如一个文件长度为532个byte,读到532之前遇到EOF都可以认为是二进制文件。
离线sbtree
只看该作者 3楼 发表于: 2008-09-24
引用第2楼破烂石头于2008-09-24 21:50发表的  :
以文本方式打开,每次读一个字符,如果读到文件长度的结束之前遇到EOF,则判断为二进制(非文本)文件。
比如一个文件长度为532个byte,读到532之前遇到EOF都可以认为是二进制文件。

这种方法可靠吗?持怀疑态度
windows 7 + VC++2008 + Qt4.5.2
离线sbtree
只看该作者 4楼 发表于: 2008-09-24
引用楼主jinyxin于2008-09-24 14:58发表的 识别二进制文件 :
在QT下,怎么才能识别一个文件是二进制文件?

楼主对二进制文件的定义是怎样的?是指所有由编译链接生成的可执行文件和库文件吗?其实严格意义上任何文件都是二进制保存的。我认为判断这个是很难的,除非界定了二进制文件的格式,例如判断可执行文件头
windows 7 + VC++2008 + Qt4.5.2
离线傻猫
只看该作者 5楼 发表于: 2008-09-24
用2进制方式读,读完后用进行编码检测,如果可以检测成功,就说明可以有某种编码显示为文本文件,否则可以默认为二进制文件
-------------------------------
不常在
有事短消息或者到我blog讨论http://hi.baidu.com/ning_cat
已经没用qt作开发了。。。:-(
离线sbtree
只看该作者 6楼 发表于: 2008-09-24
引用第5楼傻猫于2008-09-24 23:35发表的  :
用2进制方式读,读完后用进行编码检测,如果可以检测成功,就说明可以有某种编码显示为文本文件,否则可以默认为二进制文件


图形图像文件,word文件以及其它各种格式的文件能被判断成二进制的吗?
windows 7 + VC++2008 + Qt4.5.2
离线傻猫
只看该作者 7楼 发表于: 2008-09-24
刚刚用自己分离的moliza的编码库测试了下,判断不出来 晕倒
-------------------------------
不常在
有事短消息或者到我blog讨论http://hi.baidu.com/ning_cat
已经没用qt作开发了。。。:-(
离线water_wf

只看该作者 8楼 发表于: 2008-09-25
应该说如何判断可执行与库文件?
离线water_wf

只看该作者 9楼 发表于: 2008-09-25
引用第7楼傻猫于2008-09-24 23:57发表的  :
刚刚用自己分离的moliza的编码库测试了下,判断不出来 晕倒

编码库?
离线破烂石头
只看该作者 10楼 发表于: 2008-09-25
所有的文件都是二进制的吧
所以应该只能判断出是否为文本文件,非文本文件则为二进制的,只能用binary模式打开并进行读写
如果要判断是否是可执行的程序段,如dll, exe之类的,应该可以读文件中一些特定的定段进行判断
word(doc格式),图片我理解都是二进制的。

gnu的grep就是用的那种方式判断是否为文本文件的。
快速回复
限100 字节
 
上一个 下一个