Binary 如何获取Erlang中的二进制字节长度?

Binary 如何获取Erlang中的二进制字节长度?,binary,erlang,byte,packet,Binary,Erlang,Byte,Packet,如果我有以下二进制文件: <<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 下面是一个示例,说明了从8位(适合1个字节)到17位(需要3个字节才能适合)的大小差异: 8>[{bit_

如果我有以下二进制文件:

<<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
下面是一个示例,说明了从8位(适合1个字节)到17位(需要3个字节才能适合)的大小差异:

8>[{bit_size(),byte_size()}|| N
2> bit_size(<<32,16,10,9,108,111,99,97,108,104,111,115,116,16,170,31>>).
128
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> [{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}]