Erlang(8):二進制型與位語法

大多數狀況下,二進制型裏的位數都會是8的整數倍,所以對應一個字節串。
若是位數不是8的整數倍,就稱這段數據爲位串。
二進制型的編寫和打印形式是雙小於號和雙大於號之間的一列整數或字符串
2> <<5,10,20>>.
<<5,10,20>>
3> <<"Hello Fable!">>.
<<"Hello Fable!">>

操做二進制型
binary模塊
list_to_binary(L)->B 把io列表(iolist)L裏的素有元素壓扁後造成的二進制
split_binary(Bin,Pos)->{Bin1,Bin2} 在pos處把二進制型Bin一分爲二
term_to_binary(Term)->Bin 把任何erlang數據類型轉換成二進制型。
binary_to_term(Bin)->Term 將二進制型轉回來
byte_size(Bin)->Size 返回二進制型的字節數

位語法 
用於從二進制數據裏提取或加入單獨的位或者位串。
用於協議編程以及生產操做二進制數據的高效代碼。
若是是8的整倍,類型就是binary。若是不是,就是bitstring
M = <<X:N1,Y:N2,Z:N3>> %XYZ都是變量,N1N2N3都是各自所佔的位數。
<<X:N1,Y:N2,Z:N3>> = M %讀取M中的數據到XYZ,跟上面的徹底想法的操做。
<<>>
<<E1,E2,...,En>>

單個Ei元素能夠有4種形式:
Ei = Value |
	 Value:Size |
	 Value/TypeSpecifierList | 
	 Value:Size/TypeSpecifierList
	 TypeSpecifierList 類型指定列表 End-Sign-Type-Unit
	 End能夠是big| little | native
	 Sign能夠是signed|unsigned Type能夠是integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32默認值是integer
	 Unit的寫法是unit:1|2|...256

位推導:編程

[ X || <<X:N>> <= B]. %列表
<< <<X>> || <<X:N>> <= B >>. %位串
相關文章
相關標籤/搜索