深入理解二进制文件

blu*_*ief 3 windows hex bits hex-editors binary-data

我正在学习C++特别关于二进制文件结构/操作,因为我对二进制文件,位,咬和十六进制数字的主题完全不熟悉,所以我决定向后退一步,对主题建立一个扎实的理解.

在下面我已经包含的图片中,我blue thief在一个.txt文件中写了两个单词().

在此输入图像描述

原因是,当我使用hexeditor解码文件时,我想了解信息是如何以十六进制格式存储的.现在,不要误解我的意思,我并不是试图通过整天阅读十六进制格式来谋生,而只是对二进制文件组合的基本知识有最低限度的理解.我也知道所有文件都有不同的结构,但只是为了理解,我想知道,"蓝色小偷"和单个' '(空格)这些词是如何被转换成这些字符的.

还有一件事是,我听说二进制文件包含三种类型的信息:

header,ftm&和data!那只关注音频,视频等多媒体文件吗?因为,我似乎看不到任何东西,除了它看起来data只是这个文件中的一块.

dod*_*ler 6

在文本文件中的字符编码为一个Windows扩展ASCII --one字节为每个要在记事本中看到的字符.你所看到的就是你得到的.

通常,Windows系统上的文本和二进制文件之间存在很大的区别.在Unix/Linux系统上,区别是模糊的......事实上,你可以说没有区别.

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

二进制文件是一整套不同的鱼.正如您所提到的,大多数都包含一些描述后续数据如何编码的标题.根据数据类型,这些标题的大小可能会有很大差异(再次假设在Windows系统和Unix上的扩展名表示).一个简单的例子是WAV格式对于未压缩的音频.如果你在十六进制编辑程序中打开一个WAV文件,你会看到前四个字节是"RIFF" - 这是一个标记,通常称为"幻数",即使它是可读的文本,表明内容是一个音频文件.较新版本的WAV规范有点复杂,但最初WAV标题只是"RIFF"标记加上十几个字节,表示以下数据的采样率.(你可以通过将音频CD上的轨道中的原始数据与通过以44.1 KHz翻录该轨道的未压缩副本而创建的WAV文件进行比较来看到这一点 - 数据应该相同,只需添加一个标题部分启动WAV文件.)

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