erlang - 访问二进制中的变量位位置 - Erlang

标签 erlang

我是 erlang 新手,有一个可能很简单的问题。

假设我有类似 A = [ 7, 203, 15, 11 ] 和一些二进制 B 的东西。 AB 都是在运行时生成的。 有没有一种简单的方法可以通过 A 中描述的位置检查 B 中的位。 因此,要检查的第一个位是 7,接下来是 203,依此类推。

我意识到我可以对 A 进行排序并迭代 B 直到到达 A 中的位置,但这似乎有点结束了对于这样一个简单的问题来说,这是最重要的。

提前致谢!

最佳答案

您可以执行类似以下模块的操作:

-module(bits).

-export([select/2]).

select(Pattern, Bitstring) -> select(Pattern, Bitstring, []).

select([], _, Acc) -> lists:reverse(Acc);
select([H | T], Bitstring, Acc) ->
    Pos = H - 1,
    <<_:Pos/bitstring, B:1/integer, _/bitstring>> = Bitstring,
    select(T, Bitstring, [B | Acc]).

关于erlang - 访问二进制中的变量位位置 - Erlang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918468/

相关文章:

http - Web 服务器容忍高客户端轮询率 : Cowboy vs. Yaws Web 服务器

erlang - 可以 mock 模拟 erlang :exit?

sockets - Erlang套接字发送超时永远不会发生

c# - 如何确保奥尔良 Cereal 的一致性?

erlang - 在Erlang中,消息发送者有什么方法可以等待响应?

erlang - 0MQ 带绿色线程?

Riak 数据库上的 Erlang MapReduce 出现异常

erlang - 有没有一种聪明的方法来赋予消息不同的优先级?

Erlang escript 使用启动参数启动应用程序

erlang - 在 Erlang 集群中的所有节点上运行 gen_server 的最佳方法是什么?