[erlang-questions] Bit Packing question

PAILLEAU Eric eric.pailleau@REDACTED
Sat Dec 13 15:35:21 CET 2014


5> A = <<1,2,8>>.
<<1,2,8>>
6> P = <<A:2/binary>>.
<<1,2>>

Got it ?

Le 13/12/2014 15:32, PAILLEAU Eric a écrit :
> 1> Num = 128.
> 128
> 2> BNum = <<Num>>.
> <<128>>
> 3>  Packet = <<BNum:1/binary>>.
> <<128>>
>
> regards.
>
>
> Le 13/12/2014 15:25, Santosh Kumar a écrit :
>> Hi Wes,
>> I just tried <<BNum:4/binary>> and that didn't work as well. Here are
>> the complete steps I ran through in erl:
>>
>> 1> Num = 128.
>>
>> 128
>>
>> 2> BNum = <<Num>>.
>>
>> <<128>>
>>
>> 3> Packet = <<BNum:4/binary>>.
>>
>> ** exception error: bad argument
>>
>>
>> Any help much appreciated.
>>
>>
>> Thanks
>>
>> Santosh
>>
>>
>> On Fri, Dec 12, 2014 at 11:54 PM, Wes James <comptekki@REDACTED
>> <mailto:comptekki@REDACTED>> wrote:
>>
>>     According to:
>>
>>     http://www.erlang.org/doc/programming_examples/bit_syntax.html
>>
>>     after the / you need integer, float or binary, i.e.,
>> <<BNum:4/binary>>
>>
>>     -wes
>>
>>
>>     On Fri Dec 12 2014 at 9:22:59 PM Santosh Kumar <santosh79@REDACTED
>>     <mailto:santosh79@REDACTED>> wrote:
>>
>>         Hrm, I'm not sure I understand. Here's some code:
>>
>>         Num = 128.
>>
>>         128
>>
>>
>>         So, Num is a number. I then do:
>>
>>         BNum = <<Num>>.
>>
>>
>>         Now, BNum is a binary. I check it too:
>>
>>         is_binary(BNum).
>>
>>         true
>>
>>
>>         I now, try doing:
>>
>>         Packet = <<BNum:4/bytes>>.
>>
>>         ** exception error: bad argument
>>
>>
>>         Here, I am trying to create another binary Packet, that is 4
>>         bytes long as and has as it's contents BNum. If what you say is
>>         true and "/bytes" is used to pack Binary data this would work.
>>         Unless I am missing something.
>>
>>
>>         Thanks for your response.
>>
>>
>>         Santosh
>>
>>
>>         On Fri, Dec 12, 2014 at 10:39 PM, Bob Ippolito <bob@REDACTED
>>         <mailto:bob@REDACTED>> wrote:
>>
>>             'bytes' is for packing binaries, not numbers. The
>>             working example you have is the correct way to do it.
>>
>>
>>             On Friday, December 12, 2014, Santosh Kumar
>>             <santosh79@REDACTED <mailto:santosh79@REDACTED>> wrote:
>>
>>                 Hi group,
>>                 I was trying to pack a number into 4 bytes and was
>>                 having a hard time doing it. Here is what I was trying:
>>
>>                 102> Num = 128.
>>
>>                 128
>>
>>                 103> <<Num:4/bytes>>.
>>
>>                 ** exception error: bad argument
>>
>>
>>                 While this works:
>>
>>
>>                 104> <<Num:32>>.
>>
>>                 <<0,0,0,128>>
>>
>>
>>                 Here the packing into 32 bits works but the packing into
>>                 4 bytes fails. Not sure why.
>>
>>
>>                 Any help, much appreciated.
>>
>>
>>                 Thanks
>>
>>                 Santosh
>>
>>         _________________________________________________
>>         erlang-questions mailing list
>>         erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>>         http://erlang.org/mailman/__listinfo/erlang-questions
>>         <http://erlang.org/mailman/listinfo/erlang-questions>
>>
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>




More information about the erlang-questions mailing list