You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于在MIME类型magic规则中使用offset参数的疑问

在MIME类型magic规则中使用offset参数的疑问

嗨,我来帮你搞清楚这个offset参数的用法,结合你的.gp文件案例一步步说~

首先明确:offset参数代表的是从文件起始位置开始计算的字节偏移量,计数从0开始。比如offset=0就是文件的第一个字节,offset=10就是第11个字节(因为0是第一个计数位)。

看你给出的.hexdump输出,你要匹配的"Content/PK"字符串,我们来定位它的起始偏移量:

00000010 00 00 00 00 00 00 00 00 00 00 08 00 00 00 43 6f |..............Co|
00000020 6e 74 65 6e 74 2f 50 4b 03 04 14 00 08 00 08 00 |ntent/PK........|

从地址来看,00000010对应文件的第16个字节(十六进制0x10=十进制16),这一行的最后两个字节是43(对应字符C)和6f(对应字符o),它们的偏移量分别是16+14=30(十进制)和16+15=31。接下来的ntent/PK从偏移量32开始,所以整个"Content/PK"的起始偏移量是30。

另外要注意:你的.gp文件开头是PK,这是ZIP压缩文件的标志性签名,系统大概率已经有ZIP类型的magic规则。为了让你的.gp规则优先匹配,需要把priority设得比ZIP规则的优先级更高(数值越小优先级越高,比如默认ZIP可能用50,你可以设为30)。

最后给你整理好的magic规则:

<mime-type type="audio/x-gp">
  <magic priority="30">
    <match value="Content/PK" type="string" offset="30" />
  </magic>
  <glob pattern="*.gp"/>
</mime-type>

如果你怕偏移量算错,可以用这个命令直接定位字符串的字节偏移量:

grep -ob "Content/PK" /home/cactus/Descargas/arpeggio.gp

它会输出类似30:Content/PK的结果,直接用这个数字作为offset参数就好~

备注:内容来源于stack exchange,提问作者Magenta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:59:52