2016-03-17 3 views
0

Когда я прохожу 2 размер битых следующим образом:Ожидаемого усеченные байты

iex(11)> <<2 :: size(2)>> 

У меня, как выход в IEX (я определить размер бита)

<<2::size(2)>> 

Но когда я пишу следующее в IEX

iex(12)> <<3 :: size(2)>> 

у меня

<<3::size(2)>> 

но ожидается

<<1::size(2)>> 

И 4

iex(13)> <<4 :: size(2)>> 
<<0::size(2)>> 

У меня есть ноль и это правильно, но с 3 почему я получил 3 вместо 1?

ответ

2

size(2) означает 2 бита, которые могут вместить 4 (2^2) значения: 0, 1, 2 или 3.

Похоже, что вы хотите хранить 1 бит, если вы ожидали 3, чтобы стать 1. Для этого используйте size(1):

iex> <<3::size(1)>> 
<<1::size(1)>> 
+0

Я настолько глуп, спасибо большое. –

Смежные вопросы