2016-11-06 107 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>> 
相关问题