无法复制可执行文件的内容?
Contents of executable files cannot be copied?
因此,通过将原始文件的内容复制到空白文本文件中,可以将文本文件复制并粘贴到另一个位置。这可以使用文本编辑器来完成。突出显示文本文件的内容,复制,创建新的空白文本文件,粘贴到其中。
但是,为什么图片、音频、视频、可执行文件等不能这样复制粘贴呢?例如,我用文本编辑器打开一个可执行文件,复制它的所有内容,创建一个新的空白文本文件,将扩展名更改为 .exe,然后粘贴到其中(通过文本编辑器)。但是,文件不能是 运行。为什么?
此外,我希望能够像编辑文本文件一样编辑这些类型的文件。有办法吗?
因为可执行文件和媒体文件是 "binary" 文件。文本文件也是二进制文件,但有所不同。所有文件都是二进制创建的,但有些创建的二进制文件比其他文件更多。
您正在文本编辑器中打开一个二进制文件。这会立即改变字节的语义。主要问题是字节包含的值恰好对应于换行符的值,如果它是文本文件(0x0A
和 0x0D
),它将呈现为 platform-dependent 换行符(例如 \r\n
在 Windows 上)。当您复制它时,您已将 0x0A
或 0x0D
更改为 0x0D 0x0A
。
然后是控制字符或 non-printable 字符。并非 0x00
和 0xFF
之间的所有字节都可以表示为一个字符。它们将被省略或替换为可显示的字符。
因此,当您复制包含这些内容的文本时,它们将被省略或以其他方式被破坏。
结论:您不能可靠地使用文本来显示所有可能的字节值,除非您选择对字节值进行编码,例如使用 Base64 编码。
如果要编辑二进制文件,请使用可识别这些字节的编辑器:"hex editor"。请注意,更改二进制文件中的随机字节值并不能保证该文件的完整性:格式中可能内置了校验和,您的编辑将使该校验和无效。
因此,通过将原始文件的内容复制到空白文本文件中,可以将文本文件复制并粘贴到另一个位置。这可以使用文本编辑器来完成。突出显示文本文件的内容,复制,创建新的空白文本文件,粘贴到其中。
但是,为什么图片、音频、视频、可执行文件等不能这样复制粘贴呢?例如,我用文本编辑器打开一个可执行文件,复制它的所有内容,创建一个新的空白文本文件,将扩展名更改为 .exe,然后粘贴到其中(通过文本编辑器)。但是,文件不能是 运行。为什么?
此外,我希望能够像编辑文本文件一样编辑这些类型的文件。有办法吗?
因为可执行文件和媒体文件是 "binary" 文件。文本文件也是二进制文件,但有所不同。所有文件都是二进制创建的,但有些创建的二进制文件比其他文件更多。
您正在文本编辑器中打开一个二进制文件。这会立即改变字节的语义。主要问题是字节包含的值恰好对应于换行符的值,如果它是文本文件(0x0A
和 0x0D
),它将呈现为 platform-dependent 换行符(例如 \r\n
在 Windows 上)。当您复制它时,您已将 0x0A
或 0x0D
更改为 0x0D 0x0A
。
然后是控制字符或 non-printable 字符。并非 0x00
和 0xFF
之间的所有字节都可以表示为一个字符。它们将被省略或替换为可显示的字符。
因此,当您复制包含这些内容的文本时,它们将被省略或以其他方式被破坏。
结论:您不能可靠地使用文本来显示所有可能的字节值,除非您选择对字节值进行编码,例如使用 Base64 编码。
如果要编辑二进制文件,请使用可识别这些字节的编辑器:"hex editor"。请注意,更改二进制文件中的随机字节值并不能保证该文件的完整性:格式中可能内置了校验和,您的编辑将使该校验和无效。