integer to binary

Bjorn Gustavsson <>
Fri Oct 7 13:45:55 CEST 2005


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 ->
    list_to_binary([B|Acc]);
int_to_bin(N, Acc) ->
    int_to_bin(N bsr 8, [N band 16#ff|Acc]).

/Björn

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



More information about the erlang-questions mailing list