Was ist der Unterschied zwischen einem Binary und einem Bitstring in Erlang?

In der Erlang-Shell kann ich Folgendes tun:

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

Aber wenn ich folgendes versuche:

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

Im ersten Fall nehme ich eine Ganzzahl und verwende die Bitstringsyntax, um sie in ein 32-Bit-Feld zu setzen. Das funktioniert wie erwartet. Im zweiten Fall benutze ich dieterm_to_binary BIF, um das Tupel in eine Binärdatei umzuwandeln, aus der ich versuche, bestimmte Bits mit der Bitstringsyntax zu entpacken. Warum funktioniert das erste Beispiel, aber das zweite Beispiel schlägt fehl? Es scheint, als ob sie beide sehr ähnliche Dinge tun.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage