匹配 Guard 中二进制文件的最后一个字节

发布于 2024-12-09 05:13:47 字数 116 浏览 0 评论 0原文

是否可以使用模式匹配来匹配二进制文件中的最后一个字节。像这样的东西:

<<Rest/binary, 45>> = BinaryToMatch 

Is it possible to match the last byte in a binary using pattern matching. Something like:

<<Rest/binary, 45>> = BinaryToMatch 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

小嗲 2024-12-16 05:13:47

简而言之,没有(至少在 R14B01 中没有)。您还必须知道二进制文件的大小。

Skip = byte_size(BinaryToMatch) - 1,
<<_:Skip/binary, 45>> = BinaryToMatch.

In short, no (at least not in R14B01). You must also know the size of the binary.

Skip = byte_size(BinaryToMatch) - 1,
<<_:Skip/binary, 45>> = BinaryToMatch.
千鲤 2024-12-16 05:13:47

或者,您也可以执行45 = binary:last(Bin)。不幸的是这个函数不是一个守卫 BIF。

Alternatively, you can also do 45 = binary:last(Bin). Unfortunately this function is not a guard BIF.

や三分注定 2024-12-16 05:13:47

在erlang 19中(可能以前的版本也支持这个,我没有测试它们)你可以使用这个守卫:

when binary_part(Key, {byte_size(Key), -1}) =:= BinMatchElement

In erlang 19 (may be previous versions also support this, I don't test them) you can use this guard :

when binary_part(Key, {byte_size(Key), -1}) =:= BinMatchElement
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文