模式匹配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.
中有更好的解释
我正在尝试将二进制文件与此进行模式匹配
<<_:(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.
中有更好的解释