creating a binary number
Bob Ippolito
bob@REDACTED
Thu Dec 9 21:49:44 CET 2021
On Thu, Dec 9, 2021 at 8:04 AM Java House <java4dev@REDACTED> wrote:
> Hello
>
> I am trying to build a binary number but I cannot find the correct way:
> 13> <<1:1/bitstring,
> 0:1/bitstring,0:1/bitstring,0:1/bitstring,0:1/bitstring,0:1/bitstring,0:1/bitstring,0:1/bitstring>>.
> ** exception error: bad argument
> in function eval_bits:eval_exp_field1/6 (eval_bits.erl, line 123)
> in call from eval_bits:create_binary/2 (eval_bits.erl, line 81)
> in call from eval_bits:expr_grp/4 (eval_bits.erl, line 72)
>
> How do we build a binary number e.g.
> 10000000 or 10101010 or even a binary number that is not just 8 bit but
> 12, 14 or 17 bit long
>
I think the confusion here is that there is a type called binary for
dealing with bits/bytes/words and there's also the binary number system
(base 2). You don't need the binary type or binary syntax to work with
integers in base 2.
To write an integer literal in radix 2 (binary):
> 4095 =:= 2#111111111111.
true
You can also use that syntax (or any other way to represent an integer)
when constructing a binary (note the bit length of 12).
> <<2#111111111111:12>>.
<<255,15:4>>
If, for some reason, you wanted to construct it a bit at a time:
> <<1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 1:1>> =:=
<<2#111111111111:12>>.
true
The /bitstring modifier is not really relevant to this, it is for
constructing or destructing a larger binary from other binaries that may
not have a multiple-of-eight length.
>
<<<<1:1>>/bitstring, <<1:1>>/bitstring, <<1:1>>/bitstring,
<<1:1>>/bitstring, <<1:1>>/bitstring, <<1:1>>/bitstring, <<1:1>>/bitstring,
<<1:1>>/bitstring, <<1:1>>/bitstring, <<1:1>>/bitstring, <<1:1>>/bitstring,
<<1:1>>/bitstring>> =:= <<2#111111111111:12>>..
To display integers in base 2, you could use integer_to_list/2 or
integer_to_binary/2 or a format string.
> integer_to_list(4095, 2).
"111111111111"
> integer_to_binary(4095, 2).
<<"111111111111">>
> io_lib:format("~.2B", [4095]).
"111111111111"
-bob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20211209/0911a32a/attachment.htm>
More information about the erlang-questions
mailing list