I tried to split two fields from a binary string:
-define(S,<<"M\0\0\0522039355099,010100000008,0,010170000000,0,0,0,0,0,0,,,0,0,,0110,00,150,0,0,0\0">>).<<Message_length:4/binary,Msg/binary>> = S.
the first 4 bytes are the length of the following message, the other byte are the message,
a null byte terminates the string.
The result is:
** exception error: o match of right hand side value
EDIT
Just before the given code, there is:
[Sequence|Reste] = binary:split(T,<<"\0">>),
Does “Reste” bounded ?
Your code is ok, so either you dont have a binary string, or the length of Mystring does not comply with the pattern. Here’s a quick test:
If you have a string (a list of integers) instead of a binary string (<<“string”>>), as Vincenzo suggested, call erlang:list_to_binary/1 first.
Hope it helps
EDIT: I’ve checked the example string you left in a comment of Vincenzo’s answer. I’ve tried it with your code and still works. Is it possible that Message_length and/or Msg are already bound (and different to Mystring) when reaching that line of code? That would make the pattern matching fail.
EDIT2: Tested with the updated data in the question: