无法复制可执行文件的内容?

人气:997 发布:2022-10-16 标签: character-encoding exe executable copy-paste

问题描述

因此,通过将原始文件的内容复制到空白文本文件中,可以将文本文件复制并粘贴到其他位置。这可以使用文本编辑器来完成。突出显示文本文件的内容,复制、创建新的空白文本文件,然后粘贴到其中。

但是,为什么图像、音频、视频、可执行文件等不能这样复制和粘贴?例如,我使用文本编辑器打开一个可执行文件,复制其所有内容,创建一个新的空白文本文件,将扩展名更改为.exe,然后粘贴到其中(通过文本编辑器)。但是,该文件不能运行。为什么?

此外,我还希望能够像编辑文本文件一样编辑这些类型的文件。有办法吗?

推荐答案

,因为可执行文件和媒体文件是"二进制"文件。文本文件也是二进制的,但不同。所有文件都是二进制创建的,但有些文件的二进制创建程度高于其他文件。

您正在文本编辑器中打开一个二进制文件。这会立即更改字节的语义。主要问题是包含一个值的字节,如果它是文本文件(0x0A0x0D),则该值恰好与换行符的值相对应,它将被呈现为与平台相关的换行符(例如,在Windows上)。复制时,您已将0x0A0x0D更改为0x0D 0x0A

然后是控制字符或不可打印字符。并非0x000xFF之间的所有字节都可以表示为字符。它们将被省略或替换为可显示的字符。

因此,当您复制包含它们的文本时,它们将被省略或以其他方式损坏。

总结:您不能可靠地使用文本来显示所有可能的字节值,除非您选择对字节值进行编码,例如使用Base64编码。

如果要编辑二进制文件,请使用能够识别这些字节的编辑器:"十六进制编辑器"。请注意,更改二进制文件中的随机字节值并不能保证该文件的健全性:格式中可能内置了校验和,而您的编辑将使该校验和无效。

583