[erlang-questions] Bit reversing

Eranga Udesh <>
Thu Aug 23 04:16:29 CEST 2007

```Hi,

Thanks for the code snippet. However what I wanted to find out is whether
there’s a BIF or Function which can do this without the need of binary/bit
segmentation, list creation, list reversing and recreation the reversed
binary. The complexity of this method is too high write a method that is
heavily used.  A little improvement I can suggest to your code is in
reverse_byte/1 function, we can do a byte decode in little/big endian and
repack is in opposite endian.

So, anything available like that?

Also is it possible to segment a binary starting from tail?

Eg. with bitlevel_binaries and binary_comprehension compiler flags
[ X || <<X:7>> <= <<1,2,3,4,5,6>>] ---> Results ---> [0,64,64,48,32,20]

Ie. It segments the binary starting from the beginning. In bit
representation,
00000001 00000010 00000011 00000100 00000101 00000110 ---> Results --->
0000000 1000000 1000000 0110000 0100000 0010100 000110

How do I make it to give result,
[32,32,24,16,10,6]
In bit representation,
00000001 00000010 00000011 00000100 00000101 00000110 ---> Results --->
000000 0100000 0100000 0011000 0010000 0001010 0000110

Thanks,
- Eranga

From:
[mailto:] On Behalf Of Shimon Cohen
Sent: Thursday, August 23, 2007 1:42 AM
To:
Subject: Re: [erlang-questions] Bit reversing

Hi

As reading just now Chap. 5 in "Programming Erlang",
I can't ressist the chalange. Although not very staright forward...

reverse_binary(B) ->
list_to_binary(lists:reverse([reverse_byte(X) || X <-
binary_to_list(B)])).

reverse_byte(B) ->
<<B0:1, B1:1, B2:1, B3:1, B4:1, B5:1, B6:1, B7:1>> = <<B>>,
<<B7:1, B6:1, B5:1, B4:1, B3:1, B2:1, B1:1, B0:1>>.

Shimon.
On 8/22/07, Eranga Udesh <> wrote:
Hi,

Is there a straight forward and efficient method to reverse the bits in a
whole binary? For eg.

<<bit 1 .... bit n>>
After reversing,
<<bit n .... bit 1>>

Thanks,
- Eranga

_______________________________________________
erlang-questions mailing list

http://www.erlang.org/mailman/listinfo/erlang-questions

```