获取任意整数的字节大小
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
给定一个整数,例如 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