Erlang Programming/Bitsyntax

Bit Strings
Erlang lets us use Bit Strings. They have the form <> or <>

The default bit length is 8. 65> <<1:8>> == <<1>>. true

Integers used in bit strings can be padded on the left with zeroes. 66> <<1:8>> == < >. true

Some bit strings have string-like representations. 38> < >. <<"g">>

Remember that using the default bit length will cause truncation of too-large integers! 39> <<"g">> == < >. true 40> < > == < >. true 41> <<00011111:8>> == < >. true 42> <<00011111:16>> == <<43, 103>>. true 43> <<00011111:24>> == <<0, 43, 103>>. true 44> <<00011111:32>> == <<0, 0, 43, 103>>. true

We cannot specify individual bits with integers. We must use values with a bit length of one. 67> < >. <<"e">> 68> <<1:1, 0:1, 1:1>>. <<5:3>> 69> < > == <<1:1, 0:1, 1:1>>. false 70> < > == <<1:1, 0:1, 1:1>>. false 71> <<1:1, 0:1, 1:1>> == <<5:3>>. true 72> <<0:5, 1:1, 0:1, 1:1>>. <<5>> 73> <<0:5, 1:1, 0:1, 1:1>> == < >. false

We can select parts of a bit string with pattern matching. 45> <> = <<"A">>. <<"A">> 46> H. 1 47> T. 1 86> <<01000001:8>> == <<"A">>. true 87> <<1:2,1:6>> == <<"A">>. true 88> <<65>> == <<"A">>. true

We can match X to a value. 95> <<1:2,X:6>> = <<"A">>. <<"A">> 96> X. 1

We can not match Y to a bit length. 97> <<1:2,1:Y>> = <<"A">>. ** 1: variable 'Y' is unbound **

We can use a bound variable as a bit length. 98> Z = 6. 6 99> <<1:2,X:Z>> = <<"A">>. <<"A">> 100> X. 1