比特语法
<<>>
<<E1,...,En>>
Ei = Value |
Value:Size |
Value/TypeSpecifierList |
Value:Size/TypeSpecifierList
Type= integer | float | binary | bytes | bitstring | bits | utf8 | utf16 |utf32
Signedness= signed | unsigned (整型值时有意义,默认是unsigned)
Endianness= big | little | native 默认是big
Unit= unit:IntegerLiteral
例子:
1. <<1,17,42>>.
默认情况,
Size=整形 8位,浮点 64位
size( <<1,17,64>> ). % 3 字节
size( <<1,17.0/float,64>> ) .1+8+1=10 字节
Type=默认 bytes
Endianness 可以有 big (大顶端) little (小顶端) native(本机【为大顶或小顶之一】)
2. <<M:8,P:8,Q:8>> = <<1,17,42>>. % M 1,P 17, Q 42.
3 .<<A,B,C:16>> = <<1,17,42:16>>.
总32位, A 8位,B 8位,C 16位。
4. <<D:16,E,F>> = <<1,17,42:16>>.
总32位, D 16位,E 8位,F 8位。
1
0000001
17
00010001
42
00000000 00101010
1-------- 17------- 42---------------------
0000001 00010001 00000000 00101010
----------------------- ------------ -----------
D 273 E 0 F 42
5.
<<G,H/binary>> = <<1,17,42:16>>.
总 32位 G 8位,H剩余
6.
<<G,H/bitstring>> = <<1,17,42:12>>.
总 22位 。
1
0000001
17
00010001
42
00000010 1010 % 2 和10
G 1
H=<<17,2,10:4>>
7.
<<1024/utf8>>. 结果 <<208,128>>
如何解释?