leewendao
V2EX  ›  问与答

小白想问个问题,那些可以转变文件类型的软件是怎么实现的?

  •  
  •   leewendao · Oct 2, 2020 · 2062 views
    This topic created in 2053 days ago, the information mentioned may be changed or developed.

    最近在找资料弄到 Kindle 上,因为 Kindel 不支持 equp 格式,所以要把 equp 转为 mobi 的。

    在这个过程中我注意到有一些转变文件类型格式的软件,例如说 convertio 。这时我突然发现这一块是我的知识盲区,我不太明白这个转变过程是如何实现的。用 bing 等查了一圈还是不得其解,所以就来论坛发帖求问了。

    大概明白这是通过改变文件的编码实现的,但是这个过程是怎么实现的?如何保证这一过程中信息不会遗失?

    问题比较小白咳咳,但是真的不懂,求问。

    7 replies    2020-10-03 18:12:28 +08:00
    wzzzx
        1
    wzzzx  
       Oct 2, 2020   ❤️ 1
    每种文件都有自己的存储格式,如果你知道 A 文件和 B 文件的存储格式,相互转换不就是分分钟的事了么。如果是纯小白的话,可以简单理解为华氏度和摄氏度的相互转换,实际上并没有那么一个固定的公式罢了~
    chihiro2014
        2
    chihiro2014  
       Oct 2, 2020
    以某种转换方式,从 A 类变成 B 类,符合类型即可
    imdong
        3
    imdong  
       Oct 2, 2020
    我也不懂,但是我能猜到原理大概应该是这样,就以富文本内容举例吧。

    富文本比较常见的是 word 相关的格式 如 doc docx,另一个就是 html 吧。

    以 html 举例,我们用到了大量的标记来记录一段内容的样式,对于字体大小,颜色,间距等。

    那么 doc 之类的其他也是有类似的格式来记录的,只是可能不用 xml 结构,

    而如果你需要做一个格式转换的话,你需要同时能解析两边的记录结构格式啥的。

    A 格式 解析为 自己的结构,然后再重新按照 B 的格式 生成文件。

    比如,凭空假设。

    html:<p style="font-size: 14px;">你好,我是<b>张三</b>。</p>
    adoc:%paragraph:$font-size=14px$你好%,我是%bold:张三%。%

    你的程序理解这个结构后,只要知道这段是 14px 的字,张三是加粗的就好了。

    当然,实际情况应该比这个更复杂,比如图片应该是以 三原色的数值排序来做,而格式差异在压缩处理上。

    比如相同的颜色,出现的比较多的,应该会有 map,每个格式的 map 逻辑不同。

    而视频内容的压缩,又会涉及到帧与帧之间的处理逻辑了。

    但是整体思路应该是一样的。

    以上是我的猜想,如有不对,欢迎楼下大佬指正。
    DoctorCat
        4
    DoctorCat  
       Oct 3, 2020
    1.特定格式的文件是按照一定规则结构组织一起的,虽然很多文件肉眼都不可读
    2.需要知道该文件构成的规则或定义
    3.通过代码实现转换功能

    这就好比打铁工匠,把烧红的铁棍棍打成了刀子。你问刀子怎么来的?当然是利用一定的工艺,把铁块转重组为刀子了
    KennyMcCormick
        5
    KennyMcCormick  
       Oct 3, 2020 via iPhone
    这个错别字。
    我瞎了……
    leewendao
        6
    leewendao  
    OP
       Oct 3, 2020
    @imdong 谢谢谢谢,万分感谢
    leewendao
        7
    leewendao  
    OP
       Oct 3, 2020
    @DoctorCat 谢谢,有点明白了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3000 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 12:53 · PVG 20:53 · LAX 05:53 · JFK 08:53
    ♥ Do have faith in what you're doing.