read numbers

Eckard Brauer eckard.brauer@REDACTED
Thu Dec 9 20:32:41 CET 2021


Just a quick test:

Bits = fun B(0) -> []; B(N) -> B(N div 2)++[N rem 2] end.

works for me, but maps to 0 and 1, but you may convert them easily:

2> lists:map(fun F(0) -> false; F(1) -> true end, Bits(13)).
[true,true,false,true]

E.

Am Thu, 9 Dec 2021 20:09:50 +0100
schrieb Java House <java4dev@REDACTED>:

> Hi Kenneth
> my problem is that I need to extract every bit separately.
> So I need to first bit of each number and the second and the third
> etc. I want to do bit manipulation not just read the number.
> 
> But you answered my second question on how to convert a list of
> digits to a binary.
> So this is the second part of my problem
> 
> 29> lists:concat([1,1,0,0,1,1,0,0,1,0,1,0]).
> "110011001010"
> 30> list_to_binary(lists:concat([1,1,0,0,1,1,0,0,1,0,1,0])).
> <<"110011001010">>
> 31>
> binary_to_integer(list_to_binary(lists:concat([1,1,0,0,1,1,0,0,1,0,1,0]))).
> 110011001010
> 32>
> binary_to_integer(list_to_binary(lists:concat([1,1,0,0,1,1,0,0,1,0,1,0])),
> 2).
> 3274
> 
> Too many conversations for just a simple bit manipulation.
> 
> Thank you all for your contribution.
> 
> Kind Regards
> Nikolas
> 
> 
> Στις Πέμ 9 Δεκ 2021 στις 7:33 μ.μ., ο/η Kenneth Lundin
> <kenneth@REDACTED> έγραψε:
> 
> > Why not read it with
> >
> > ok, Data} = file:read_file("binary.input"),
> >
> > then split the binary to a list of lines
> >
> > BinList = binary:split(Data,<<"\n">>,[global])
> >
> > each element in the list is a binary like this:
> >
> >  B = <<"1010101100">>
> >
> > covert this to an integer with:
> >
> >
> > binary_to_integer(B,2)
> >
> > and there you have your integer which you can do whatever you like
> > with
> >
> >
> > Note, this is written on my phone so it is not tested, could be
> > some fauly detail
> >
> >
> > /Kenneth
> >
> > On Thu, Dec 9, 2021 at 6:52 PM Java House <java4dev@REDACTED>
> > wrote:
> >
> >> Hi Roger thank you for replying.
> >> I am having a series of 0s an1s in a List and want to convert it
> >> to a decimal number.
> >> I am looking for something similar to BItSet in java
> >>
> >> Kind Regards
> >> Nikolas
> >>
> >> Στις Πέμ 9 Δεκ 2021 στις 3:24 μ.μ., ο/η Roger Lipscombe <
> >> roger@REDACTED> έγραψε:
> >>
> >>> On Thu, 9 Dec 2021 at 13:29, Java House <java4dev@REDACTED>
> >>> wrote:
> >>> > Thank you Roger for the answer
> >>> > I thought about it but since I have to parse all digits for
> >>> > every row
> >>> that would mean a lot of entries as I have to create all possible
> >>> combinations of 0/1 for every position of the row.
> >>>
> >>> parse(Data) -> parse(Data, [], []).
> >>>
> >>> parse(<<"0", Rest/binary>>, Line, Lines) ->
> >>>     parse(Rest, [false | Line], Lines);
> >>> parse(<<"1", Rest/binary>>, Line, Lines) ->
> >>>     parse(Rest, [true | Line], Lines);
> >>> parse(<<$\n, Rest/binary>>, Line, Lines) ->
> >>>     parse(Rest, [], [lists:reverse(Line) | Lines]);
> >>> parse(<<>>, [], Lines) -> lists:reverse(Lines);
> >>> parse(<<>>, Line, Lines) -> lists:reverse([lists:reverse(Line) |
> >>> Lines]).
> >>>
> >>> ...results in...
> >>>
> >>> [[true,true,true,false,true,true,false,false,true,false,true,false],
> >>>  [false,true,false,false,true,true,true,false,true,true,true,false],
> >>>  [true,true,false,false,false,true,false,false,true,false,true,false],
> >>>  [false,false,true,true,false,true,false,true,true,true,false,true],
> >>>  [true,true,false,true,false,false,false,false,false,false,true,true],
> >>>  [false,true,false,true,true,false,true,true,false,false,true,false]]
> >>>
> >>



-- 
Corona? Ich desinfiziere regelmäßig mit Bier. 
What Corona? I regularly disinfect with beer.


More information about the erlang-questions mailing list