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

发布于 2024-09-28 17:01:38 字数 161 浏览 2 评论 0原文

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

543 = <<"543">>

我怎样才能做到这一点而不需要

integer_to_list(list_to_binary(K)).

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)).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

迟月 2024-10-05 17:01:38

如果您想将 543 转换为 <<"543">>我不认为你能找到比以下更快的东西:

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

因为在这种情况下,这两个函数都是用 C 实现的。

如果你想将整数转换为尽可能小的二进制表示,你可以使用 binary:encode_unsigned 来自新 二进制 模块如下:

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

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>>
南笙 2024-10-05 17:01:38

对于当前的读者,这现已在 R16 中实现,请参阅 http://erlang.org/doc/man/ erlang.html#integer_to_binary-1

For current readers, this is now implemented in R16, see http://erlang.org/doc/man/erlang.html#integer_to_binary-1

可遇━不可求 2024-10-05 17:01:38

您可以尝试类似的方法

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

,但这需要您提前知道最大位数。

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.

站稳脚跟 2024-10-05 17:01:38

我发现这个问题是因为我想要将二进制写为整数的“打印表示”。这样做的方法如下:

1> integer_to_list(543, 2).
"1000011111"

第二个参数是您想要的基数,它最多接受 36 个基数(立即转到 Wikipedia 并阅读有关 base36 编码的信息)。

I found this question because I wanted the "print representation" of a binary written as an integer. This is how you do that:

1> integer_to_list(543, 2).
"1000011111"

The second argument is the base you want, and it accepts all the way up to 36 (go to Wikipedia and read about base36 encoding now).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文