在 Erlang 中如何将整数转换为二进制?
我正在尝试将整数转换为二进制:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您想将 543 转换为 <<"543">>我不认为你能找到比以下更快的东西:
因为在这种情况下,这两个函数都是用 C 实现的。
如果你想将整数转换为尽可能小的二进制表示,你可以使用 binary:encode_unsigned 来自新 二进制 模块如下:
If you want to convert 543 to <<"543">> I don't think you can find something faster than:
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:
对于当前的读者,这现已在 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
您可以尝试类似的方法
,但这需要您提前知道最大位数。
You can try something like
But this requires you to know the maximum number of bits in advance.
我发现这个问题是因为我想要将二进制写为整数的“打印表示”。这样做的方法如下:
第二个参数是您想要的基数,它最多接受 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:
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).