理解二进制文件

问题描述 投票:0回答:1

我在

.txt
文件中写了“蓝色小偷”:

enter image description here

信息如何以十六进制格式存储?文本是如何转换成这些字符的?我听说二进制文件包含头、ftm 和数据。仅限于音频和视频等多媒体文件吗?因为我在这个文件中除了

data
之外没有看到任何其他内容。

windows hex binary-data
1个回答
6
投票

文本文件中的字符以 ASCII Windows 扩展 进行编码——您在记事本中看到的每个字符对应一个字节。所见即所得。

通常,Windows 系统上的文本文件和二进制文件之间有严格的区别。在 Unix/Linux 系统上,区别更加模糊……事实上,您可能会说没有区别。

在 Windows 系统上,区别是通过文件扩展名强制执行的。假定所有扩展名为“.TXT”的文件都是文本文件(即仅包含表示屏幕上可见字符的十六进制代码,其中“可见”包括空格)。

二进制文件完全是另一回事。正如您所提到的,大多数都包含某种标头,描述后面的数据如何编码。根据数据类型的不同,这些标头的大小可能会有很大差异(同样,假设由 Windows 系统和 Unix 上的扩展名指示)。一个简单的例子是未压缩音频的WAV 格式。如果您在十六进制编辑程序中打开 WAV 文件,您会看到前四个字节是“RIFF”——这是一个标记,通常称为“幻数”,尽管它可以作为文本读取,表明该内容是音频文件。新版本的 WAV 规范使这一点变得有些复杂,但最初的 WAV 标头只是“RIFF”标签加上十几个字节左右,指示后续数据的采样率。 (您可以通过将音频 CD 上的轨道中的原始数据与通过以 44.1 KHz 翻录该轨道的未压缩副本创建的 WAV 文件来看到这一点 - 数据应该是相同的,只是在WAV 文件的开头。)

可执行文件(编译后的程序)是一种特殊类型的二进制文件,但它们遵循大致相同的方案:标头后跟规定格式的数据。但在这种情况下,“数据”是可执行的机器代码,标头除其他外还指示文件运行的操作系统。 (例如,大多数 Linux 可执行文件以字符“ELF”开头。)

© www.soinside.com 2019 - 2024. All rights reserved.