词典

什么是位标志?

Bit Flag,也称为位字段,是可以在多种文件中找到的元数据。了解它的含义、来源以及它对你的文件有何说明。

bit-flag

位标志会把多个是/否答案打包到一个数字中。这个数字里的每一位二进制数字都是一个独立的开关:开或关、已设置或未设置。这是一种紧凑的方式,让程序用一个值的空间记录若干小信息。

数值的来源

位标志(也叫位字段)来源于编程。在 C、C++ 等语言中,它们让开发者可以在一个字节或一组字节内存储许多布尔值,每一位或每一组位都可以单独访问。文件格式借用了同样的概念,用来记录与其内容相关的各种选项。

在元数据报告中,你最有可能在 ZIP 压缩包上看到比特标志,还会在底层同样是 ZIP 容器的 Office 格式上看到它:DOCX、XLSX 和 PPTX 文档。ODT 文件和 EPUB 电子书也会存储这个标志,但报告里不一定会显示。ZIP 格式会为压缩包中的每个项目分配一个通用比特标志,由创建压缩包的程序来设定。这个数值不是谁手动输入的。

如何读取该值

该标志通常以十六进制显示,这是一种按 16 进位的数字系统,并以前缀 0x 表示。值为 0x0 表示没有任何开关被设置,这是最常见的情况。像 0x2 或 0x808 这样的值表示有一位或多位为开,你需要把该数字转换为二进制并查看每一个位的位置来解读它。

其中三个 ZIP 位开关值得了解:

  • 第一位标记项目已加密,也就是需要密码
  • 第四位表示该项目的大小和校验和写在数据之后而不是之前,这通常发生在压缩包是即时生成时
  • 第十二位表示该项目的名称以 UTF-8 存储,这是一种可以表示重音符号、非拉丁文字和 emoji 的字符编码

这对你的文件有何影响

这个标志可以解释一些否则会让你困惑的行为。比如,受密码保护的文档会在这里声明自己已锁定,在任何程序向你询问密码之前。它也解释了为什么有些应用在解压之前无法告诉你压缩包中某个项目的大小。还解释了为什么带重音符号或中文字符的文件名,在一个解压应用中显示完全正常,而在另一个中却变成乱码:前者尊重了这个 UTF-8 开关,后者则假定使用的是旧的编码方式。

这个字段不会描述文件质量,也不包含任何个人信息。它只是关于文件写入方式的技术说明,在某个文件无法打开时,有助于你找出原因。