[erlang-questions] Binary Parsing

Pete Stapley <>
Sat Mar 21 22:01:38 CET 2009


Nevermind I found the answer in the mailing list archives.

http://www.erlang.org/pipermail/erlang-questions/2007-November/031091.html

Pete Stapley wrote:
> I am attempting to parse some Radius attributes with Erlang and I have 
> run into a bit of a problem. I pass some binary data to parseAttributes 
> and I want to start peeling off the attributes one by one. I first peel 
> off Type which is one byte, then Length which is also one byte. Next I 
> want to peel off the Attribute. The Length variable is the length of the 
> attribute plus the Type and Length byte, so I have to subtract 2 bytes 
> from the Length variable before peeling off the attribute. I have tried 
> the method below without any luck. Is there a way to do this?
> 
> Thanks,
> 
> -define(BYTE, 8/unsigned-big-integer).
> 
> parseAttributes(Bin) ->
>      parseAttributes(Bin, []).
> 
> parseAttributes(<<>>, Atts) ->
>      {ok, Atts};
> %%problem is here, Length - 2 does not seem to work
> parseAttributes( <<Type:?BYTE, Length:?BYTE, Att:Length - 2/binary, 
> Rest/binary>>, Atts) ->
>      io:format("Type: ~p Length: ~p Att:~p Length: ~p~n", [Type, Length, 
> Att, size(Rest)]),
>      parseAttributes(Rest, Atts).
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list