Я пытаюсь проанализировать двоичный файл, и когда дело доходит до возвращения чисел, упакованных в порядке с прямым порядком байтов, в 16 бит, я надеюсь, что это будет работать:
foo(Bin, Bits) when is_binary(Bin) ->
<<A, B, C, D, _Rest>> = Bin,
(bar(<<A, B>>, Bits) =/= 0) and (bar(<<C, D>>, Bits) =/= 0).
bar(<<N:16/little-unsigned-integer>>, Bits) ->
binary:at(Bits, N).
К сожалению, средство сопоставления не работает, если размер ячейки составляет 4 байта или меньше. Есть ли лучший способ сделать так, чтобы остальные могли быть пустыми? Если бы я мог избежать проверки двоичной длины в вызывающей стороне, тем лучше.