1. 程式人生 > >Erlang筆記-二進位制-位元位語法

Erlang筆記-二進位制-位元位語法

看Erlang的語法看到二進位制處理部分覺都很有意思,做個記錄

存在於很多函數語言程式設計語言之中的列表速構的思想,也被擴充套件到了Erlang的位元位語法中。位串速構酷似列表速構,只是[…]被換成了<<…>>。
以一個小整數列表為例,所有整數都在0和7之間,你可以按每個數3位元位將它們打包成位串,如下:“

<< << X: 3>> || X <- [1, 2, 3, 4, 5, 6, 7] >>
 列印結果: <<41, 203, 23:5>>

這一步是怎麼獲得的呢,熟悉二進位制就可以很容易推匯出來

如果使用二進位制表示[1, 2, 3, 4, 5, 6, 7],而且每個數字只佔3位元位

001 010 011 100 101 110 111

列印的時候預設以8個位元位讀取,然後就可以根據下面來讀取資料

001 010 01 | 1 100 101 1 | 10 111

41(00101001)
203(11001011)
23:5(10111)

舉一反三

<< << X: 8>> || << X: 3>> <= << 41, 203, 23: 5>> >>
返回資料為<<1, 2, 3, 4, 5, 6
, 7>
>

“`
[<< X: 8>> || << X: 3>> <= << 41, 203, 23: 5>>]
返回資料為[1, 2, 3, 4, 5, 6, 7]