位串长度

ste*_*emm 2 erlang bitstring

我需要比特串的长度.我为它创建了这样的功能:

len( << Bitstr/bitstring >> ) ->
        len( Bitstr, 0 ).

len( << _X, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 8 );
len( << _X:7, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 7 );
len( << _X:6, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 6 );
len( << _X:5, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 5 );
len( << _X:4, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 4 );
len( << _X:3, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 3 );
len( << _X:2, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 2 );
len( << _X:1, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 1 );
len( <<>>, Len ) ->
        Len.
Run Code Online (Sandbox Code Playgroud)

但是,也许,有更多的最佳方法来获得位串的长度?也许有些BIF?(我实际上已经搜索过了,但没找到).

谢谢

Ste*_*ski 6

使用该erlang:bit_size/1功能.