Question

I need length of bit string. I've created such function for it:

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.

But, maybe, there is more optimal way to get length of bit string? Maybe some BIF? (I've actually searched for it, but didn't find).

Thanks

Was it helpful?

Solution

Use the erlang:bit_size/1 function.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top