将Erlang整数转换为位置表示法二进制

时间:2016-11-06 19:12:38

标签: binary integer erlang

我可以在Erlang中轻松地将整数转换为二进制文件:

integer_to_binary(11, 10).

返回二进制中的位在这种情况下包含这些位:

0011000100110001

我想编写一个函数来生成一个包含传入数字的二进制符号的二进制文件。也就是说,数字11的位数看起来像这样:

1011

在Erlang中有一种简单的方法吗?

1 个答案:

答案 0 :(得分: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将以大端表示形式存储字节。要以小端存储字节,可以使用binary:encode_unsigned/2

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