【问题标题】:Plain text with .gif extension in UbuntuUbuntu 中带有 .gif 扩展名的纯文本
【发布时间】:2017-10-20 05:31:21
【问题描述】:

事情就是这样,我正在使用终端来执行此操作。使用 nano 之类的文本编辑器,我创建了一个纯文本文件,其内容为:“GIF89a2017”,并将其保存为 rare.gif

事情是这样的,当我执行 filerare.gif 时,它会给我这样的输出:rare.gif: GIF 图像数据,版本 89a, 12338 x 14129,这表明它是分辨率为 12338 x 14129 的 GIF 图像,这就是我不明白的。该决议来自哪里?

另一件事是,我认为扩展名并不能真正决定它是什么类型的文件,例如当我将 .gif 转换为 .exe 时> 它仍然使用 file 命令将其识别为 GIF 图像。我猜在我遇到的问题中,它被识别为 GIF 图像,因为它是使用 GIF 扩展程序创建的,但我想知道为什么。

谢谢大家!

【问题讨论】:

    标签: gif resolution


    【解决方案1】:

    那个决议来自哪里?

    它来自您放入文件中的(伪造的)GIF89 标头。 “GIF89a”后面的四个字节定义了宽度和高度。每一个都存储为一个 16 位无符号整数。你放在那里的字符——2017——被解释为:

    32 30 ("20") -- 0x3032 = 12338
    31 37 ("17") -- 0x3731 = 14129
    

    我猜在我遇到的问题中,它被识别为 GIF 图像,因为它是使用 GIF 扩展程序创建的,但我想知道原因。

    不,file 不查看扩展名。这是因为该文件有一个半有效的 GIF 标头。如果您将标题更改为不以“GIF89a”开头的内容,它将不再被识别为 GIF。

    【讨论】:

    • 好吧,这听起来不错,但很抱歉,我才刚刚开始,我真的不明白你是如何从 20 到 32 30 以及从 17 到 31 37 进行转换的。对我来说,这看起来就像在前面添加一个 3 但我确定这不是它的完成方式。如果您不想,我不会要求您向我解释一切,但也许您可以将我重定向到我可以从中学习的地方。还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多