二进制型(binary)是一种数据结构,当二进制型里的位数都会是8
的整数倍时,对应一个字节串。当位数不是8
的整数倍,则称这段数据为位串(bitstring)。
二进制型的编写和打印形式是双小于号与双大于号之间的一列整数或字符串:
1> <<19,88,20>>.
<<19,88,20>>
2> <<"hello">>.
<<"hello">>
3> <<49,50,51>>.
<<"123">>
4> <<99,97,116>>.
<<"cat">>
在二进制型里使用整数时,它们必须属于0
至255
这个范围。
二进制型<<"cat">>
是<<99,97,116>>
的简写形式,这个二进制型是由字符串里这些字符的ASCII
编码组成的。
和字符串类似,如果某个二进制型的内容是可打印的字符串,shell就会将这个二进制型打印成字符串,否则就打印成一列整数。
可以用内置函数和位语法来构建二进制型或提取它里面的元素。
1. 内置函数
list_to_binary(L) -> B
list_to_binary
返回一个二进制型,它是通过把io列表(iolist)L
里的所有元素压扁后形成的(压扁的意思是移除列表里所有的括号)。io列表本身是循环定义的,它是指一个列表所包含的元素是0…255的整数、二进制型或者其他io列表。
5> list_to_binary([999,123]). %% 999超出范围0~255
** exception error: bad argument
in function list_to_binary/1
called as list_to_binary([999,123])
6> list_to_binary([<<"abc">>, 123, <<1,2,3>>]).
<<97,98,99,123,1,2,3>>
split_binary(Bin, Pos) -> {Bin1, Bin2}
这个函数在Pos
处把二进制型Bin
一分为二。
7> split_binary(<<1,2,3,4,5