获取任意整数的字节大小

Getting the size in bytes of an arbitrary integer

给定一个整数,例如 98749287,是否有一些 built-in/libray 函数(Erlang 或 Elixir)用于获取以字节为单位的大小?

澄清一下,用于表示二进制数的最小字节数。

看起来很简单,并且已经使用 "division by base" 方法编写了一个函数,然后对位进行计数,但是经过几个小时的搜索文档后,还没有找到任何看起来有用的东西。

试试这个表达式:

Value = (... your input ...),
NumBytes = size(integer_to_binary(Value, 2) + 7) div 8.

参考:http://www.erlang.org/doc/man/erlang.html#integer_to_binary-2

如果您有无符号整数,则可以使用以下代码段:

byte_size(binary:encode_unsigned(Integer))

示例:

1> byte_size(binary:encode_unsigned(3)).
1
2> byte_size(binary:encode_unsigned(256)).
2
3> byte_size(binary:encode_unsigned(98749287)).
4