[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content-about-file-format":3,"$f36nvtzwrjqckp":21},{"id":4,"type":5,"slug":6,"title":7,"date":8,"category":9,"tags":10,"body_markdown":13,"permalink":14,"excerpt_src":14,"media_type":14,"media_title":14,"media_author":14,"media_url":14,"rating":14,"layout":14,"pv":15,"admin_only":15,"created_at":16,"updated_at":16,"deleted_at":14,"status":17,"html":18,"excerpt":19,"cover":20},116,"article","about-file-format","【科普文】有关文件格式","2013-11-26 09:27","tech",[11,12],"文件","格式","\n![题图](\u002Fassets\u002Ftech\u002F2013\u002Fabout-file-format\u002F01.jpg)\n\n这篇文章是在知乎回答的一个问题“为什么计算机需要各种各样的格式？能否有一种通用的格式来替代它们？”觉得挺有意思的，可以引起一些在信息架构方面的思考。如果有一天机器有了智能，那么也许我们的格式真的都不再需要了。\n\n首先，格式肯定不是伴随计算机而生的，它并不特指文件格式，而是指一种“规格”“规范”“约定”之类的东西。比如你写合同，最少要有合同正文和甲乙双方签字，这个就是合同的格式；比如你去银行办业务，要填表单，这个就是银行需要的格式；再比如你要写一首古诗，每句要换个行，这也是格式。这些都跟计算机无关，格式是普遍存在的。\n\n其次，格式存在的意义是什么？如上面的所有东西，都可以归为“文档”，或者更通用一些，叫“文本”。理论上，你也可以不需要任何格式，合同就从头到尾，把约定的事情讲清楚就行，去银行也写一段文字，上面交代清楚自己的资料，写诗就从头写到尾一大段，也行。没有格式，这些事情也可以做，那为什么还需要格式？因为有了格式，效率可以更高，比如你一看合同，就知道我该重点看条款，应该在结尾签名，一看银行表单就知道我应该在这栏填姓名，这栏填身份证号，一看分四行每行七字就知道这大概是一首诗了。格式的意义在于规范，让不同的东西有自己的规范，以便更好地书写、检验、读取，比如如果没有银行表单，你可能怎么也不知道要写证件号码，可能写了也不知道还要写发证机关，而有了这个表单（格式）之后，一切都变得好办了，你好写，工作人员也好检查填得对不对，也方便它录入电脑办理后续手续。\n\n\u003C!-- more -->\n\n回到计算机中的文件格式，和上面的格式是一样的，因为文件有不同的用途，约定自己的格式有助于更好地写入、检验和读取。比如你要生成一个文本文件，那按照文本文件的格式，直接ASCII编码，将编码写入磁盘就OK，比如要生成一个BPM文件，那按照BMP的格式，分四个部分，先写BM，再写文件的元数据，再写颜色表，再写图像数据。这样其它软件读取的时候，一看.txt就知道直接ASCII解码，当文本显示就行了，一个.bmp就知道分四个部分读，读完计算出像素值再显示出来。其它格式都依此类推，有了这些格式，生成软件和读取软件可以更好地处理不同类型的文件。\n\n最后，计算机能否有一种通用格式呢？其实这个问题其实不能用“能”或者“不能”来回答。计算机的文件格式是可以分层的，比如最底层，大家都是二进制，0101而已，没区别，全都是一样的格式，这正是这些不同格式的文件可以被放在同一个磁盘上的原因。在这之上是文件系统的格式，文件系统可以将这些0101以不同的策略来分布在物理磁盘上，也可以没事自己做做压缩、搬迁神马的。再之上是这些二进制数据0101的含义，同样的一段数据，可能在作为文本的时候表示“1”，但在作为图像的一部分的时候表示“一个黑色的点”。所以在“含义”这一层，不同用途的文件是一定会有不同的格式的，即便它们用了什么火星来的技术，使用相同的物理格式来保存，最后也一定在逻辑含义上有区分，而这些区分具体到我们日常理解的逻辑，便成了不同的文件格式。\n\nP.S.1: 在上面例子中，人与人之间交互可以使用不分格式的“文本”来做，是因为人具有自然语言书写和理解的能力，比如你写“我的身份证号是xxx”，或者写“身份证xxx”，别人都可以理解，但计算机不能，所以计算机必须通过严格约定的格式来区分不同格式，在逻辑上不存在通用格式。\n\nP.S.2: 将一个文件用base64编码，便得到一段上面说的“火星技术”类似的东西，即不管什么文件看起来都是一样的格式，但一旦被使用，仍然需要base64解码，变成不同的文件格式。追求这样一种看起来通用的格式，并没有什么正面意义，反而增加运算量和人的识别难度。\n",null,0,"2026-08-28 04:37:17","published","\u003Cp>\u003Cimg src=\"https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Ftech\u002F2013\u002Fabout-file-format\u002F01.jpg\" alt=\"题图\">\u003C\u002Fp>\n\u003Cp>这篇文章是在知乎回答的一个问题“为什么计算机需要各种各样的格式？能否有一种通用的格式来替代它们？”觉得挺有意思的，可以引起一些在信息架构方面的思考。如果有一天机器有了智能，那么也许我们的格式真的都不再需要了。\u003C\u002Fp>\n\u003Cp>首先，格式肯定不是伴随计算机而生的，它并不特指文件格式，而是指一种“规格”“规范”“约定”之类的东西。比如你写合同，最少要有合同正文和甲乙双方签字，这个就是合同的格式；比如你去银行办业务，要填表单，这个就是银行需要的格式；再比如你要写一首古诗，每句要换个行，这也是格式。这些都跟计算机无关，格式是普遍存在的。\u003C\u002Fp>\n\u003Cp>其次，格式存在的意义是什么？如上面的所有东西，都可以归为“文档”，或者更通用一些，叫“文本”。理论上，你也可以不需要任何格式，合同就从头到尾，把约定的事情讲清楚就行，去银行也写一段文字，上面交代清楚自己的资料，写诗就从头写到尾一大段，也行。没有格式，这些事情也可以做，那为什么还需要格式？因为有了格式，效率可以更高，比如你一看合同，就知道我该重点看条款，应该在结尾签名，一看银行表单就知道我应该在这栏填姓名，这栏填身份证号，一看分四行每行七字就知道这大概是一首诗了。格式的意义在于规范，让不同的东西有自己的规范，以便更好地书写、检验、读取，比如如果没有银行表单，你可能怎么也不知道要写证件号码，可能写了也不知道还要写发证机关，而有了这个表单（格式）之后，一切都变得好办了，你好写，工作人员也好检查填得对不对，也方便它录入电脑办理后续手续。\u003C\u002Fp>\n\u003Cp>回到计算机中的文件格式，和上面的格式是一样的，因为文件有不同的用途，约定自己的格式有助于更好地写入、检验和读取。比如你要生成一个文本文件，那按照文本文件的格式，直接ASCII编码，将编码写入磁盘就OK，比如要生成一个BPM文件，那按照BMP的格式，分四个部分，先写BM，再写文件的元数据，再写颜色表，再写图像数据。这样其它软件读取的时候，一看.txt就知道直接ASCII解码，当文本显示就行了，一个.bmp就知道分四个部分读，读完计算出像素值再显示出来。其它格式都依此类推，有了这些格式，生成软件和读取软件可以更好地处理不同类型的文件。\u003C\u002Fp>\n\u003Cp>最后，计算机能否有一种通用格式呢？其实这个问题其实不能用“能”或者“不能”来回答。计算机的文件格式是可以分层的，比如最底层，大家都是二进制，0101而已，没区别，全都是一样的格式，这正是这些不同格式的文件可以被放在同一个磁盘上的原因。在这之上是文件系统的格式，文件系统可以将这些0101以不同的策略来分布在物理磁盘上，也可以没事自己做做压缩、搬迁神马的。再之上是这些二进制数据0101的含义，同样的一段数据，可能在作为文本的时候表示“1”，但在作为图像的一部分的时候表示“一个黑色的点”。所以在“含义”这一层，不同用途的文件是一定会有不同的格式的，即便它们用了什么火星来的技术，使用相同的物理格式来保存，最后也一定在逻辑含义上有区分，而这些区分具体到我们日常理解的逻辑，便成了不同的文件格式。\u003C\u002Fp>\n\u003Cp>P.S.1: 在上面例子中，人与人之间交互可以使用不分格式的“文本”来做，是因为人具有自然语言书写和理解的能力，比如你写“我的身份证号是xxx”，或者写“身份证xxx”，别人都可以理解，但计算机不能，所以计算机必须通过严格约定的格式来区分不同格式，在逻辑上不存在通用格式。\u003C\u002Fp>\n\u003Cp>P.S.2: 将一个文件用base64编码，便得到一段上面说的“火星技术”类似的东西，即不管什么文件看起来都是一样的格式，但一旦被使用，仍然需要base64解码，变成不同的文件格式。追求这样一种看起来通用的格式，并没有什么正面意义，反而增加运算量和人的识别难度。\u003C\u002Fp>\n","\u003Cp>\u003Cimg src=\"https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Ftech\u002F2013\u002Fabout-file-format\u002F01.jpg\" alt=\"题图\">\u003C\u002Fp>\n\u003Cp>这篇文章是在知乎回答的一个问题“为什么计算机需要各种各样的格式？能否有一种通用的格式来替代它们？”觉得挺有意思的，可以引起一些在信息架构方面的思考。如果有一天机器有了智能，那么也许我们的格式真的都不再需要了。\u003C\u002Fp>\n\u003Cp>首先，格式肯定不是伴随计算机而生的，它并不特指文件格式，而是指一种“规格”“规范”“约定”之类的东西。比如你写合同，最少要有合同正文和甲乙双方签字，这个就是合同的格式；比如你去银行办业务，要填表单，这个就是银行需要的格式；再比如你要写一首古诗，每句要换个行，这也是格式。这些都跟计算机无关，格式是普遍存在的。\u003C\u002Fp>\n\u003Cp>其次，格式存在的意义是什么？如上面的所有东西，都可以归为“文档”，或者更通用一些，叫“文本”。理论上，你也可以不需要任何格式，合同就从头到尾，把约定的事情讲清楚就行，去银行也写一段文字，上面交代清楚自己的资料，写诗就从头写到尾一大段，也行。没有格式，这些事情也可以做，那为什么还需要格式？因为有了格式，效率可以更高，比如你一看合同，就知道我该重点看条款，应该在结尾签名，一看银行表单就知道我应该在这栏填姓名，这栏填身份证号，一看分四行每行七字就知道这大概是一首诗了。格式的意义在于规范，让不同的东西有自己的规范，以便更好地书写、检验、读取，比如如果没有银行表单，你可能怎么也不知道要写证件号码，可能写了也不知道还要写发证机关，而有了这个表单（格式）之后，一切都变得好办了，你好写，工作人员也好检查填得对不对，也方便它录入电脑办理后续手续。\u003C\u002Fp>\n","https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Ftech\u002F2013\u002Fabout-file-format\u002F01.jpg",{"total":15,"totalRoots":15,"comments":22,"pv":15},[]]