List 如何在Erlang中将整数转换为二进制?

List 如何在Erlang中将整数转换为二进制?,list,erlang,integer,List,Erlang,Integer,我正在尝试将整数转换为二进制: 543 = <<"543">> 你可以试试类似的东西 6> A = 12345. 12345 7> B = <<A:32>>. <<0,0,48,57>> 6>A=12345。 12345 7> B=。 但这需要您事先知道最大位数。如果您想将543转换为,我认为您找不到比以下更快的: 1> list_to_binary(in

我正在尝试将整数转换为二进制:

543 = <<"543">>

你可以试试类似的东西

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

但这需要您事先知道最大位数。

如果您想将543转换为,我认为您找不到比以下更快的:

1> list_to_binary(integer_to_list(543)).
<<"543">>
1>列表到二进制(整数到列表(543))。
因为在这种情况下,这两个函数都是用C实现的

如果要将整数转换为最小的二进制表示形式,可以使用新模块中的函数,如下所示:

1> binary:encode_unsigned(543).
<<2,31>>
2> binary:encode_unsigned(543, little).
<<31,2>>
1>二进制:无符号编码(543)。
2> 二进制:无符号编码(543,小)。

对于当前的读者,这已经在R16中实现了,请参见

好主意,但如果我不知道该怎么办。没有没有冒号的二进制选项吗。我试过了,但没用。你可以分步进行转换。(一个rem 4294967296)用于每个32位和循环。它不应该是list_to_binary(integer_to_list(Int))?我想他的意思是,在erlang中生成全功能字符串需要太多内存(因为它的字符链接列表,所以每个字母都会消耗额外的32位或64位作为指向字符串中下一个字符的指针)我高度怀疑erlang开发者是否将字符串作为字符的链接列表。我还没有检查自己,但我无法想象在生产中如此低效地使用链表。
1> binary:encode_unsigned(543).
<<2,31>>
2> binary:encode_unsigned(543, little).
<<31,2>>