[erlang-questions] bit syntax: what does "<<1234>> =" match?

Anthony Ramine nox@REDACTED
Sat Feb 26 15:24:39 CET 2011


Le 25 févr. 2011 à 20:23, Anton Lebedevich a écrit :

> Hello,
> 
> In erlang R14B01 shell:
> 1> <<1234>> = <<1234>>.
> ** exception error: no match of right hand side value <<"Ò">>
> 
> Right side of expression evaluates to <<210>> (8 least significant bits
> from 1234), so the following matches:
> 2> <<210>> = <<1234>>.
> <<"Ò">>
> 
> 1234 on the left side of expression should evaluate to <<210>> too, but
> it doesn't:
> 3> <<1234>> = <<210>>.
> ** exception error: no match of right hand side value <<"Ò">>
> 
> Is there an explanation of what happens when integer on left side of
> binary matching expression doesn't fit into default 8 bit?
> 
> Regards,
> Anton Lebedevich.

Wild guess here, but I would say <<1234>> on the right side constructs a binary using the use-only-the-8-least-significant-bits, thus not failing because the integer is too large; while <<1234>> on the left side is a pattern, so the integer isn't truncated and obviously fails to match since you can't have a byte larger than 255.

Regards,

--
Anthony Ramine
Dev:Extend
http://dev-extend.eu



More information about the erlang-questions mailing list