怎样了解他人的数据文件的格式? (200分)

你如果知道对象实例化和文档的serlize函数的实现的化,你就会知道,如果是别人创建
的文档(非标准的文档),你是无法读出的,那都是二进制的,里面可能包含别人文档
中的类对象,你想怎么读吧?
 
:zhjie
我想你是没明白文件这个词的概念。
更没明白在程序(所有程序,跟开发工具无关)写文件和读文件的时候所做的事情。
比如:有个这样的类
class test{
unsigned char c;
unsigned long l;
};
test x;
x.c=10;
x.n=10;
现在我把这个类的一个对象x保存到文件里,
那么文件里存的就是00001010 00000000 00000000 00000000 00001010
(这里不考虑大终端的问题),第一个字节是c,后面四个字节是n,因为long占用了四个字节

在读文件的时候,发生的事情刚好相反,
如果你从文件开始,读一个对象x,那么你会得到x.c=10,x.n=10
但是如果有这样的一个类的对象
class test2{
unsigned char c;
unsigned short s1;
unsigned short s2;
}
test2 x2;
如果从文件开始把文件内容读相应大小到这个对象里,是不是就读不出来呢?
显然不是。
读到的x2.c=10,x2.s1=0;x2.s2=10;
假设文件是别人的格式,你现在想知道怎么去读,那么你就得知道类test 的结构。
也就是说,这个5字节大小的文件,都有N种可能让你来猜,更何况是上K,上M的文件?
如果你有那种文件的编辑器,可以从头开始,一点点去找规律,查看它的二进制数据。
 
顶部