这对你们所有人来说可能听起来是一个非常愚蠢的问题,事实上也确实如此,但是,我真的搞不清楚数据和文本之间的确切区别。
我将提出我的观察,假设我们有 2 个文件,text.txt
和data.png
。您可能已经猜到了,前者是一个包含文本的简单文本文件,可以用简单的文本编辑器打开,其内容就是我们所说的文本,对吗?
现在,后者是一张图片,其内容称为数据,对吗?但是,虽然它是一张图片,当你打开它时,它会在你的电脑上显示一张图片,但是,如果你将它的扩展名更改为 .txt 之类的内容,或者说,如果你用记事本之类的文本编辑器(使用 utf-8 编码)打开它,我们可以看到文本,但非常模糊。但这至少证明了图像文件也包含文本,那么数据是什么?数据在哪里?那是文本数据吗?用计算机术语来说,我如何区分文本和数据?
我想分享的另一个观察是,我正在练习隐写术我成功地在图像文件末尾添加了一些文本,而且它甚至没有损坏它!那么,我添加的文本不是数据吗?
谢谢
附言:我不知道对于这样的问题该选择什么标签。
答案1
首先,从某种意义上来说,这两种形式都是“数据”,从根本上讲,它们在基础层面上的存储方式完全相同,都是二进制格式。无论是文本、数字、可执行文件还是其他任何内容,它们都以二进制形式(0 和 1 的组合)存储在您使用的存储介质上。
那么,为什么您所指的文本会以这种方式显示呢?
所有文本都再次存储为 0 或 1 的组合。但这本身对于想要查看驱动器上存储的值的最终用户来说毫无用处。这就是字符编码开始游戏。
您可能之前听说过一些不同类型的字符编码,例如 ASCII 和 UTF。它们用于将存储的二进制文件映射到您识别的字符(然后使用某种字体显示,但这略微超出了此范围)。
以 ASCII 为例,字符存储在 7 位中(一个字节由 8 位组成),从 0000000 到 1111111。您可以在此处看到每个字符的映射方式:
每个字符,即大写字母、小写字母、符号和“特殊字符”,都由特定的值解释。Hello
例如:
`H` -> Decimal 72 -> Binary 01001000
`e` -> Decimal 101 -> Binary 01100101
`l` -> Decimal 108 -> Binary 01101100
`l` -> Decimal 108 -> Binary 01101100
`o` -> Decimal 111 -> Binary 01101111
其他字符映射将使用全部 8 位,甚至超过 1 个字节来存储字符,从而允许使用相同的编码将更大的字母表或多个字母表和更多符号存储在同一个文件中。
因此我们可以看到二进制现在如何转换成我们所认为的“文本”。
但是当你打开另一种不被视为文本的文件类型时会发生什么?
你的机器上的每个文件都是以二进制形式存储的,可以用文本编辑器打开,它将试图读取文件的一种编码形式。当然,显示的内容将是完全的胡言乱语,因为文件未编码为字符映射表可读取,而是以不同的方式执行。许多字节会巧合地匹配它正在使用的映射中的字符,这有时意味着您会看到您认识的奇怪字符。其余的要么不会被映射,并返回一个奇怪或缺失的字符,要么会匹配映射的不同部分,而这些部分解码起来毫无意义。但是没有什么可以阻止它尝试。
我编辑了 PNG 文件的数据,但它仍然可以打开且没有损坏。为什么?
看着这里您可以看到 PNG 文件的结构。具体来说:
块可以按任意顺序出现,但要遵守每个块类型的限制。(一个值得注意的限制是 IHDR 必须首先出现,而 IEND 必须最后出现;因此 IEND 块充当文件结束标记。)同一类型的多个块可以出现,但前提是该类型明确允许。
这种特殊的文件类型提供了文件结束标记,它将告诉读取器此点之后的数据不是文件本身的一部分。因此,您可以添加超出此点的数据,如果读取器正确处理文件,则可能不会造成问题。也就是说,如果您添加另一个 EoF 标记,则可能会造成混淆。
另一件需要注意的事情是,文件类型由块组成,每个块都带有 CRC 校验。CRC 校验告诉读取器该块是否有效且未被更改,并且应该始终存在。读取器可能被训练忽略不包含有效数据块和 CRC 组合的数据,尽管我怀疑这会引发某种形式的错误。
进一步阅读:
答案2
图像文件不包含文本(也许除了一些元数据)。相反,您需要反过来看:文本也是数据。文本是解码二进制 1 和 0 的一种特定方式。图像查看器将使用另一个解码器来理解原始数据。
如果您尝试强制对不包含文本的文件进行文本解码,结果将是乱码,正如您已经发现的那样。
根据文件格式,尾随的垃圾数据可能会被忽略。但这不是隐写术,因为附加数据没有被隐藏。隐写术会稍微改变一些像素来对数据进行编码。
答案3
在信息技术领域,文本是人类可读的字符序列及其组成的单词,可以编码为计算机可读的格式,例如 ASCII 或 UTF-8。文本通常与非字符编码区分开来数据,例如位图形式的图形图像和程序代码,有时被称为“二进制”(但实际上是其自身的计算机可读格式)。
来源:什么是文本?
答案4
数据:意味着将事实收集在一起以供参考。
文本:只是字母或字符的组合。