Arc*_*iic 1 syntax typography text-formatting
这纯粹是出于学术好奇心,但我\xe2\x80\x99经常在Windows(Windows 10 Pro;64位)和Android上发现文件没有被混淆,但在每个实际相关字符之间包含一堆NUL字符,使得在 Windows 上难以按原样阅读(至少在 Android 上,我使用的资源管理器应用程序\xe2\x80\x94 X-plore \xe2\x80\x94 在编辑模式下作为文本启动时似乎会自动删除)。这是一个例子:
这是一个二进制文件,其中包含可打印 ASCII 字符集之外的字符。
由于这些字符“不可打印”,Notepad++ 将它们显示为描述性块。您可能会看到其他人,如下所示。0x00在这里您可以看到从二进制 0 /到 255 / 0xFF(这是单个字节中可以存储的最大值)的所有值。
第 1、2 和 3 行显示的值通常称为“控制字符”,用于影响终端、光标位置等... aNUL的值为 0 / 0x00。控制BS字符是“ Backspace ”,指示应用程序删除一个字符并将光标向后移动一格。值得注意的是和之间的“丢失”或不可见字符...这里是“水平制表符”和“换行符”字符 - 前者是相当不言自明的,后者将使文本流到下一个线。BSVT
在第 4 行和第 5 行,您可以看到整套可打印 ASCII 字符。空格 ( ) 的二进制值为 32 / 0x20,感叹号的值为 33 / 0x21,等等...第 5 行末尾的有趣方框是DEL控制字符 - 127 /0x7F。
包括 128 及以上的所有值要么是“扩展 ASCII ”,要么是不可打印的,并且这些值从第 6 行开始显示为其原始值 - 例如:x80。没有一个好的方法来确定如何解释这些字符 - 某些 DOS 应用程序使用其中一些字符来生成围绕“窗口”、终端上的框或区域的框架。
有关详细信息,请参阅wiki 页面的“字符组”部分。
在“十六进制编辑器”中查看与上面相同的文件,您通常会看到原始二进制值以及 ASCII 表示形式。
当文件包含纯文本以外的数据(例如:它是一个应用程序或其他二进制文件)时,您会看到很多非打印字符,因为它们从未供人类使用......在此类文件中,数据以二进制形式排列,通常遵循严格的结构或格式。在某些情况下,数据代表大量数字(通过将多个字节连接在一起),在其他情况下,它们可能代表“机器代码”或直接呈现给处理器的原始指令。
您可能能够在此类二进制文件中看到字符串,但这更多的是“偶然”而不是有意为之 - 应用程序本身必须知道当您看到消息时要在屏幕上打印什么内容,这就是。
有几种常见的方法可以将字符串编码到二进制文件中。
此格式使用 8 位字符,并以字符终止字符串NUL。该字符串在文件中立即可见,如下所示 - 请注意终止NUL.
此格式使用 16 位字符(即:两个字节连接),并且可以表示Unicode描述的代码点的一部分。在这里,如果您在字符之间阅读,您会发现该字符串有些可见NUL...这种格式在面向 Windows 的应用程序中非常常见。
Logical Disks你能看到第二行的字符串吗?
二进制文件还可以在其中存储其他资源 - 例如图像、声音、XML、JSON、档案等...然后,如果需要,应用程序可以在运行时将资源提取到磁盘,或者通常可以直接从内存中处理它们。
通常可以使用工具以自动方式提取这些资源,但在某些情况下,文件未按照开放/通用标准设计,并且需要一些手动干预。