Konstei Asked: 2022-04-18 10:45:01 +0800 CST2022-04-18 10:45:01 +0800 CST 2022-04-18 10:45:01 +0800 CST 图像文件中有哪些奇怪的字符? 772 所以我对linux很陌生,我正在学习基本命令。我也很想知道事情是如何运作的,所以在我学会了 cat 和 nano 命令之后,我尝试在图像上使用它们,所有这些奇怪的符号都出现了(linux mint): 我也在kali上试过,我得到了同样的东西,所以我相信它与图像的存储方式有关,但我还是在开始,我找不到任何关于这些符号到底是什么的解释意思是。 linux cat 1 个回答 Voted Best Answer frabjous 2022-04-18T11:08:39+08:002022-04-18T11:08:39+08:00 所有的文件都是由 1 和 0 组成的,每一个都称为一个位。一个“字节”是 8 位。对于 8 位,有 256 种可能的 1 和 0 组合。 纯文本文件中的数据,即nano要编辑的内容(终端期望使用 输出cat)被划分为字节。通常,文件中的每个字符构成一个字节。例如,在 ASCII 编码中,字母“A”是字节 01000001。某些字符编码(如 UTF-8)有时使用多个字节来表示一个字符,因为它们需要覆盖超过 256 个字符,但它们仍然将文件成字节。(“控制字符”也有字节,例如用于换行的“Control-J”。) 图片是二进制文件,不是文本文件;它们的位也可以分为字节,但这些字节并不意味着代表字符/字母。 当非文本文件作为文本文件打开时,文本编辑器会尝试将二进制文件的字节解释为代表字符。由于它们不打算这样做,因此二进制文件的字节与如果文件实际上是文本文件时这些相同字节将代表的字符之间存在相当多的随机相关性。但是,这就是 nano 试图将文件解释为的内容,因此您会得到随机字符,其中许多是通常不打算打印的控制字符,因此会产生奇怪的结果。 这就是我理解发生了什么的方式。无论如何,我都不是计算机科学家,所以我希望评论者会在需要时改进我的答案。 显然,如果你想编辑图像,你应该使用像 gimp 或 krita 这样的图像编辑器,而不是文本编辑器。您可以假设使用二进制编辑器或十六进制编辑器等,但这需要非常详细的知识,了解图像格式如何将其表示的数据转换为位和字节,我认为这对于不同的图像格式是不同的。
所有的文件都是由 1 和 0 组成的,每一个都称为一个位。一个“字节”是 8 位。对于 8 位,有 256 种可能的 1 和 0 组合。
纯文本文件中的数据,即
nano
要编辑的内容(终端期望使用 输出cat
)被划分为字节。通常,文件中的每个字符构成一个字节。例如,在 ASCII 编码中,字母“A”是字节 01000001。某些字符编码(如 UTF-8)有时使用多个字节来表示一个字符,因为它们需要覆盖超过 256 个字符,但它们仍然将文件成字节。(“控制字符”也有字节,例如用于换行的“Control-J”。)图片是二进制文件,不是文本文件;它们的位也可以分为字节,但这些字节并不意味着代表字符/字母。
当非文本文件作为文本文件打开时,文本编辑器会尝试将二进制文件的字节解释为代表字符。由于它们不打算这样做,因此二进制文件的字节与如果文件实际上是文本文件时这些相同字节将代表的字符之间存在相当多的随机相关性。但是,这就是 nano 试图将文件解释为的内容,因此您会得到随机字符,其中许多是通常不打算打印的控制字符,因此会产生奇怪的结果。
这就是我理解发生了什么的方式。无论如何,我都不是计算机科学家,所以我希望评论者会在需要时改进我的答案。
显然,如果你想编辑图像,你应该使用像 gimp 或 krita 这样的图像编辑器,而不是文本编辑器。您可以假设使用二进制编辑器或十六进制编辑器等,但这需要非常详细的知识,了解图像格式如何将其表示的数据转换为位和字节,我认为这对于不同的图像格式是不同的。