最近写一个程序用于读取STL文件(一种三维文件格式),并显示出来。STL文件存储格式有一个特殊点就是分两种类型,一种是ASCII文件类型,一种是二进制文件类型。ASCII文件类型的,里面就是一些字符串,描述了三维三角面片的坐标和法向量。二进制文件和ASCII基本一致,不过是按照二进制的方式按位来读取,并且有文件头的描述。
于是我遇到一个难题,就是如何判断STL文件是字符串格式的还是二进制格式的。
在解决该问题的过程中,我跳出该问题,上升到所有文件存储类型的判断。
严格的说,所有文件在磁盘上的存储都是二进制的,这里说说的二进制的判断,我认为就是判断该文件是否为可理解的。一串字符是可理解的,但一串类似0101001的代码是无法理解的(再简单点说:用记事本打开你能看懂的)。
我再在网上查阅了一下,发现了好几种解决方法,现在罗列一下,各位可以根据不同情况选择使用:
1、判断字符范围。
该方式主要是针对英文字符的,如果文件中有中文字符就会判断失败。比如:
该方式针对256以下的字符问题都不大,一旦遇到双字节中文就会出现c为负数的情况,导致判