在erlang中匹配二进制的模式

时间:2015-07-09 15:38:14

标签: erlang

我正在尝试将二进制模式与此

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

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

1 个答案:

答案 0 :(得分:3)

在位语法中,我们不能将运行时表达式用作位大小。 我们只能使用常量,编译时间表达式,如_:(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]

中有更好的解释