integer to binary
Fri Oct 7 14:44:02 CEST 2005
Actually, as Mattias Lang pointed out in a email to me, the guard test
So here is a better version of the code, with a better name and validity
tests so that you'll know if you pass it values it isn't designed to handle:
unsigned_to_bin(I) when is_integer(I), I >= 0 ->
unsigned_to_bin(0, Acc) ->
unsigned_to_bin(N, Acc) ->
unsigned_to_bin(N bsr 8, [N band 16#ff|Acc]).
Bjorn Gustavsson <> writes:
> It is actually easier not to use the bit syntax.
> For positive numbers the following function will do the trick:
> int_to_bin(I) ->
> int_to_bin(I, ).
> int_to_bin(0, [B|Acc]) when B < 256 ->
> int_to_bin(N, Acc) ->
> int_to_bin(N bsr 8, [N band 16#ff|Acc]).
> chandru <> writes:
> > Hi,
> > I want to convert an integer to a binary without having to
> > guess/figure-out how many bytes are required to fit that integer.
> > There doesn't seem to be a way to do this with the bit syntax.
> > 11> <<12345678901:40>>.
> > <<2,223,220,28,53>>
> > 12> <<12345678901:48>>.
> > <<0,2,223,220,28,53>>
> > In the example above, the integer will fit in 5 bytes but I can't
> > think of a way to specify this without trial and error. Any
> > suggestions? I can write a function which will figure out how many
> > bytes are required but it'll be nice to have a built-in way of doing
> > it.
> > cheers
> > Chandru
> Björn Gustavsson, Erlang/OTP, Ericsson AB
Björn Gustavsson, Erlang/OTP, Ericsson AB
More information about the erlang-questions