模式匹配erlang中的二进制文件

Pattern matching a binary in erlang

我正在尝试将二进制文件与此进行模式匹配

  <<_:(A * ?N + A + B)/binary,T:1/binary,_/binary>>

然而,erlang 似乎抛出了一个错误,指出变量 T 未绑定。只是一个快速的解释:我想忽略一定数量的字节然后读取一个字节然后忽略剩余的字节。我怎样才能做到这一点?

在位语法中,我们不能使用运行时表达式作为位大小。 我们只能使用常量、编译时表达式如 _:(4*8)/binary 和变量:_:Var/binary

对于您的情况,解决方案是先将 A * ?N + A + B 绑定到变量。

IgnoredBytes = A * ?N + A + B,
<<_:IgnoredBytes/binary,T:1/binary,_/binary>> = SomeBinary,
T.

answer from [erlang-questions]

中有更好的解释