魔术文件:打印一个 3 字节的大端值?
magic file: Printing a 3-byte big endian value?
我正在尝试为特定文件格式的 UNIX 工具 "file" 创建一个魔法数据库文件。我已经阅读了整个手册(man magic
和 man 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 的字节值。
我正在尝试为特定文件格式的 UNIX 工具 "file" 创建一个魔法数据库文件。我已经阅读了整个手册(man magic
和 man 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 的字节值。