获取任意整数的字节大小

时间:2015-08-26 13:55:41

标签: erlang elixir

给定一个整数,98749287,是否有一些内置/ libray函数,Erlang或Elixir,用于获取字节大小?

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

看起来很简单,并且已经使用“基于分区”方法编写了一个函数,然后计算了位,但是经过一些搜索后,文档还没有找到任何看似有用的东西。

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:2)

试试这个表达式:

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