В чем разница между бинарными и битовыми строками в Erlang?

В оболочке Erlang я могу сделать следующее:

A = 300.
    300
<<A:32>>.
    <<0, 0, 1, 44>>

Но когда я пытаюсь сделать следующее:

B = term_to_binary({300}).
    <<131,104,1,98,0,0,1,44>>
<<B:32>>
    ** exception error: bad argument
<<B:64>>
    ** exception error: bad argument

В первом случае я беру целое число и используя синтаксис битовой строки, чтобы поместить его в 32-битное поле. Это работает, как и ожидалось. Во втором случае я использую BIF term_to_binaryдля преобразования кортежа в двоичный файл, из которого я пытаюсь распаковать определенные биты, используя синтаксис битовой строки. Почему первый пример работает, а второй нет? Кажется, что они оба делают очень похожие вещи.

7
задан quanticle 30 May 2012 в 17:08
поделиться