如果我有以下二进制代码:
<<32,16,10,9,108,111,99,97,108,104,111,115,116,16,170,31>>
我怎样才能知道它有多长?
对于字节大小:
1> byte_size(<<32,16,10,9,108,111,99,97,108,104,111,115,116,16,170,31>>).
16
对于比特位数:
2> bit_size(<<32,16,10,9,108,111,99,97,108,104,111,115,116,16,170,31>>).
128
当您有一个位字符串(二进制位长度不可被字节大小8整除)byte_size/1
将会向最接近的整字节四舍五入。也就是说,该位字符串所需的字节数量:
3> bit_size(<<0:19>>).
19
4> byte_size(<<0:19>>). % 19 bits fits inside 3 bytes
3
5> bit_size(<<0:24>>).
24
6> byte_size(<<0:24>>). % 24 bits is exactly 3 bytes
3
7> byte_size(<<0:25>>). % 25 bits only fits inside 4 bytes
4
这是一个例子,说明了从8位(适合1个字节)到17位(需要3个字节才能适合)大小的差异:
8> [{bit_size(<<0:N>>), byte_size(<<0:N>>)} || N <- lists:seq(8,17)].
[{8,1},
{9,2},
{10,2},
{11,2},
{12,2},
{13,2},
{14,2},
{15,2},
{16,2},
{17,3}]