[erlang-questions] Bit syntax

Bob Cowdery bob@REDACTED
Wed Mar 9 16:09:59 CET 2011


What I actually want is 51 bytes of 16#00.

12> <<A:24, B:48, C:408>> = <<16#effe02:24,16#00:48,16#00:408>>.
** exception error: no match of right hand side value
                   
<<239,254,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                      0,0,0,...>>

Why is this different. Isn't it just saying 00 as a 408 bit number
rather than (8*51)?

Bob

On 09/03/2011 14:55, Vlad Dumitrescu wrote:
> Your C is 8*51 as a 408 bit number. You probably want 16#00:408 instead.
>
> /Vlad
>
> On Wed, Mar 9, 2011 at 15:50, Bob Cowdery <bob@REDACTED
> <mailto:bob@REDACTED>> wrote:
>
>     Thanks. The syntax did look a bit odd for a repeating group. I
>     pulled it
>     off the web somewhere.
>
>     So if I say:
>
>     7> <<A:24, B:48, C:408>> = <<16#effe02:24,16#00:48,(8*51):408>>
>     .
>     <<239,254,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>      0,0,0,...>>
>     8> A.
>     15728130
>     9> B.
>     0
>     10> C.
>     408
>
>     What do these bound values mean. C is supposed to be 51 zero bytes
>     (408
>     bits). Why is C bound to the number of bits.
>
>     Bob
>
>     On 09/03/2011 14:29, Vlad Dumitrescu wrote:
>     > Hi!
>     >
>     > On Wed, Mar 9, 2011 at 15:21, Bob Cowdery
>     <bob@REDACTED <mailto:bob@REDACTED>
>     > <mailto:bob@REDACTED
>     <mailto:bob@REDACTED>>> wrote:
>     >
>     >     Hi
>     >
>     >     I'm clearly not understanding the bit syntax properly. Could
>     someone
>     >     explain to me what I am doing wrong here. Why does the first
>     not match
>     >     when its the right shape but the second does when its the
>     wrong shape.
>     >     The bound values don't make much sense to me either.
>     >
>     >     1> <<A:24, B:48, C:408>> =
>     <<16#effe02:24,16#00:48,16#00,(8*51):408>>.
>     >     ** exception error: no match of right hand side value
>     >
>     >
>     > There is an "extra" 16#00 on the right side that is not matched
>     on the
>     > left.
>     >
>     >
>     >     2> <<A:32, B:48, C:408>> =
>     <<16#effe02:24,16#00:48,16#00,(8*51):408>>.
>     >
>     >
>     > The larger size for A "swallows" the extra value, but shifts the
>     > values a byte to the right.
>     >
>     > regards,
>     > Vlad
>     >
>
>



More information about the erlang-questions mailing list