views:

101

answers:

2

Hi,

I am trying to make an integer into a binary:

543 = <<"543">>

How can I do this without

integer_to_list(list_to_binary(K)).
+1  A: 

You can try something like

6> A = 12345.                       
12345
7> B = <<A:32>>.
<<0,0,48,57>>

But this requires you to know the maximum number of bits in advance.

Damodharan R
Good Idea, but what if I don't know. Isn't there a binary option without the colon to do it. I tried _ didn't work.
You can always do the conversion in steps. (A rem 4294967296) for each 32 bits and loop.
Daniel Luna
+6  A: 

If you want to convert 543 to <<"543">> I don't think you can find something faster than:

1> list_to_binary(integer_to_list(543)).
<<"543">>

Because in this case both functions implemented in C.

If you want to convert integer to the smallest possible binary representation you can use binary:encode_unsigned function from the new binary module like this:

1> binary:encode_unsigned(543).
<<2,31>>
2> binary:encode_unsigned(543, little).
<<31,2>>
hdima