Jaka jest różnica między binarnym a bitstringiem w Erlang?
W powłoce Erlang mogę wykonać następujące czynności:
A = 300.
300
<<A:32>>.
<<0, 0, 1, 44>>
Ale kiedy próbuję:
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
W pierwszym przypadku biorę liczbę całkowitą i używam składni łańcucha bitów do 32-bitowego pola. To działa zgodnie z oczekiwaniami. W drugim przypadku używamterm_to_binary
BIF przekształca krotkę w plik binarny, z którego próbuję rozpakować określone bity za pomocą składni bitstring. Dlaczego pierwszy przykład działa, ale drugi przykład nie działa? Wygląda na to, że oboje robią bardzo podobne rzeczy.