魔术文件:打印一个 3 字节的大端值?

magic file: Printing a 3-byte big endian value?

我正在尝试为特定文件格式的 UNIX 工具 "file" 创建一个魔法数据库文件。我已经阅读了整个手册(man magicman file),但没有找到输出 24 位大端整数的方法。我只找到了 8 位(byte)、16 位(beshort)、32 位(belong)和 64 位(bequad)。

有没有办法从具有特定 "magic file command" 的文件打印 24 位(3 字节)大端整数?

所以你想为一个U*xfile tool. Well, according to the magic描述写一个magic规则,你不能——magic格式不能描述3字节数据,所以file 无法读取它(并且它无法组合 1 字节和 2 字节字段)。 :-(

顺便说一句,我也找不到规则来 打印出 在文件中找到的神奇值 — 它仅在内部用于决定应该使用哪个消息(文件类型描述)已打印,但未包含在消息中。

好的,我刚刚找到了一种使用 file 读取三字节值的方法:

我使用命令“>0x03&0x00ffffff belong x %d”代替“>0x04 belong x %d”(它从偏移量 0x04 打印一个 4 字节的 int),它屏蔽了第一个字节,因此读取了我的三个- 来自 0x04 的字节值。