erlang中的二进制模式匹配
我正试图用一个二进制匹配这个erlang中的二进制模式匹配,erlang,Erlang,我正试图用一个二进制匹配这个 <<_:(A * ?N + A + B)/binary,T:1/binary,_/binary>> 然而,erlang似乎抛出了一个错误,表示变量T未绑定。简单解释一下:我想忽略一定数量的字节,然后读取一个字节,然后忽略剩余的字节。如何实现这一点?在位语法中,我们不能将运行时表达式用作位大小。 我们只能使用常量、编译时表达式,如u4*8/binary和变量:Var/binary 在您的情况下,解决方案是首先将A*?N+A+B绑定到变量
<<_:(A * ?N + A + B)/binary,T:1/binary,_/binary>>
然而,erlang似乎抛出了一个错误,表示变量T未绑定。简单解释一下:我想忽略一定数量的字节,然后读取一个字节,然后忽略剩余的字节。如何实现这一点?在位语法中,我们不能将运行时表达式用作位大小。 我们只能使用常量、编译时表达式,如u4*8/binary和变量:Var/binary 在您的情况下,解决方案是首先将A*?N+A+B绑定到变量
IgnoredBytes = A * ?N + A + B,
<<_:IgnoredBytes/binary,T:1/binary,_/binary>> = SomeBinary,
T.
位语法中更好地解释了这一点,我们不能使用运行时表达式作为位大小。 我们只能使用常量、编译时表达式,如u4*8/binary和变量:Var/binary 在您的情况下,解决方案是首先将A*?N+A+B绑定到变量
IgnoredBytes = A * ?N + A + B,
<<_:IgnoredBytes/binary,T:1/binary,_/binary>> = SomeBinary,
T.
在中有更好的解释,您不能使用带有变量的表达式,变量的位大小取决于。尝试绑定firstIgnoreBytes=A*?N+A+B,然后匹配它:=SomeBinary.Yep。如果你想把它作为一个答案,我可以接受,你不能使用带有变量的表达式。尝试绑定firstIgnoreBytes=A*?N+A+B,然后匹配它:=SomeBinary.Yep。如果你想回答这个问题,我可以接受