%个问题
假设我有一个二进制数:
1011011101111011111
每个数字是一位。
我希望能够将其转化为:
1、11、111、1111、11111
...and最终进入:
1、2、3、4、5
我尝试的百分比
我尝试过binary:split,但是数据总是以位块的形式编码。我只想使用原始数据(如果可能的话)。
我想要完成的%
我正在为路由协议设计报头。我希望报头包含数据包已经访问过的地址列表。我认为,如果我给报头本身提供一个由0分隔的连续1组成的报头,我就不必对报头的总长度施加任何限制。标头的标头与标头本身之间将由两个连续的零分隔。因此,如果我有一个有效载荷,它说:
<<"Hello World">>
并且数据已被alice、bob和carl访问,则标头将为:
<<"alicebobcarl">>
标头的标头是:
(8*5一)0 (8*3一)0 (8*4一) 00
假设我们对报头使用了8位编码。
那么实际的数据包将会是:
(8*5 )0 (8*3 )0 (8*4 ) 00 <<"alicebobcarl">> <<"Hello World">>
为了破译报头,我将首先定位00的第一个实例,并将00之前的所有内容拆分为每个0。然后,我会将结果列表转换为一个列表,该列表包含数据包经过的每个地址中的位数。然后,我终于可以从报头中读取地址并检索有效负载。
发布于 2012-10-03 15:48:16
到resque的Bitstring comprehensions:
1> Inp = <<1:1,0:1,3:2,0:1,7:3>>.
<<"À">>
2> [ size(B) || B <- binary:split(<< <<I>> || <<I:1>> <= Inp >>, <<0>>, [global]) ].
[1,2,3]https://stackoverflow.com/questions/12699167
复制相似问题