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

2020-10-02 23:12:08 +08:00
 leewendao

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

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

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

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

1426 次点击
所在节点    问与答
7 条回复
wzzzx
2020-10-02 23:20:31 +08:00
每种文件都有自己的存储格式,如果你知道 A 文件和 B 文件的存储格式,相互转换不就是分分钟的事了么。如果是纯小白的话,可以简单理解为华氏度和摄氏度的相互转换,实际上并没有那么一个固定的公式罢了~
chihiro2014
2020-10-02 23:28:19 +08:00
以某种转换方式,从 A 类变成 B 类,符合类型即可
imdong
2020-10-02 23:59:14 +08:00
我也不懂,但是我能猜到原理大概应该是这样,就以富文本内容举例吧。

富文本比较常见的是 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
2020-10-03 01:11:11 +08:00
1.特定格式的文件是按照一定规则结构组织一起的,虽然很多文件肉眼都不可读
2.需要知道该文件构成的规则或定义
3.通过代码实现转换功能

这就好比打铁工匠,把烧红的铁棍棍打成了刀子。你问刀子怎么来的?当然是利用一定的工艺,把铁块转重组为刀子了
KennyMcCormick
2020-10-03 10:29:06 +08:00
这个错别字。
我瞎了……
leewendao
2020-10-03 18:11:53 +08:00
@imdong 谢谢谢谢,万分感谢
leewendao
2020-10-03 18:12:28 +08:00
@DoctorCat 谢谢,有点明白了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/712292

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX