2016-11-06 72 views
0

我可以在二郎的整數很容易地轉換爲二進制的Erlang整數:轉換爲位置符號二進制

integer_to_binary(11, 10). 

在返回的二進制的比特是在這種情況下含有這些位:

0011000100110001 

我想寫一個函數來生成一個二進制數字,其中包含傳入數字的二進制符號。也就是說,數字十一看起來像這樣的位:

1011 

在Erlang有沒有簡單的方法來做到這一點?

+1

您的意思是這個'binary:encode_unsigned/1'? 'binary:encode_unsigned(11)== << 0:4,1:1,0:1,1:1,1:1 >>。如果沒有,那麼你對'11'的期望值是多少? – Dogbert

+0

哇。在閱讀文檔時,我完全錯過了這一點。這正是我所期待的!如果你把一個快速答案放在一起,我會接受它。 – Stratus3D

回答

1

要將任意大小的無符號整數轉換爲由整數中的字節組成的二進制數,可以使用binary:encode_unsigned/1binary:encode_unsigned/2

1> binary:encode_unsigned(11). 
<<"\v">> 
2> binary:encode_unsigned(11) == <<0:4, 1:1, 0:1, 1:1, 1:1>>. 
true 

binary:encode_unsigned/1將以big endian表示形式存儲字節。要以小端存儲字節,您可以使用binary:encode_unsigned/2

1> binary:encode_unsigned(123456789, little). 
<<21,205,91,7>> 
2> binary:encode_unsigned(123456789, big). 
<<7,91,205,21>> 
相關問題