Pids are not always 27 bytes. Names are atoms.<div><br></div><div>Example:</div><div><br></div><div><div><font face="courier new, monospace">-module(t).</font></div><div><font face="courier new, monospace"><br></font></div>
<div><font face="courier new, monospace">-compile([export_all]).</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">start() -></font></div><div><font face="courier new, monospace">    Pid = self(),</font></div>
<div><font face="courier new, monospace">    PidBin = term_to_binary(Pid),</font></div><div><font face="courier new, monospace">    SomeData = <<"some other data">>,</font></div><div><font face="courier new, monospace">    Bin = <<$A, PidBin/binary, SomeData/binary>>,</font></div>
<div><font face="courier new, monospace">    <<$A, 131, 103, 100, Len:16, Name:Len/binary, Id:4/binary, Serial:4/binary, Creation, Rest/binary>> = Bin,</font></div><div><font face="courier new, monospace">    DecPid = binary_to_term(<<131, 103, 100, Len:16, Name/binary, Id/binary, Serial/binary, Creation>>),</font></div>
<div><font face="courier new, monospace">    {Pid, DecPid, Rest}.</font></div><div><font face="courier new, monospace"><br></font></div><div>Output:</div><div><br></div><div><div><font face="courier new, monospace">egil@destiny ~ $ erl -sname some-node-name-used</font></div>
<div><font face="courier new, monospace">Erlang R15B (erts-5.9) [source] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false]</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">Eshell V5.9  (abort with ^G)</font></div>
<div><font face="courier new, monospace">(some-node-name-used@destiny)1> t:start().</font></div><div><font face="courier new, monospace">{<0.37.0>,<0.37.0>,<<"some other data">>}</font></div>
</div><div><br></div><div><br></div>// Björn-Egil</div><div><br></div><div><br><div class="gmail_quote">2013/1/17 Fred Hebert <span dir="ltr"><<a href="mailto:mononcqc@ferd.ca" target="_blank">mononcqc@ferd.ca</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The pattern:<br>
<br>
    <<$A, BinPid:27/binary, Data/binary>><br>
<br>
Should do it. Then you can get `Pid` by calling `binary_to_term/1` on<br>
`BinPid`. By default, the size of the `binary` type of matching is in<br>
bytes, so you should be extracting it fine. To get it in bits, you'd<br>
need to specify `BinPid:216/binary-unit:1`, for example.<br>
<br>
In your case, what you were doing is returning `Pid` as a 216 bits<br>
integer (the default type), not something you can use in any useful way.<br>
<br>
Regards,<br>
Fred.<br>
<div class="im"><br>
On 01/17, Alessandro Sivieri wrote:<br>
> Hi all,<br>
><br>
> I have the following situation: two processes are exchanging data, and one<br>
> particular packet contains the following three contents:<br>
><br>
</div>>    - a character (which defines the type of that specific packet, in this<br>
<div class="im">>    case it is a 'A')<br>
</div>>    - a pid<br>
>    - some binary data which I encode and decode in a specific way<br>
<div class="im">><br>
> The question is: how can I extract the pid part using the bit syntax? I am<br>
> able to extract the character, and I know that the pid (encoded to binary<br>
> with term_to_binary) is 27 bytes, or 216 bits, so my first thought was<br>
> something like<br>
><br>
> <<$A:8, Pid:216, Data/binary>><br>
><br>
> But this is wrong because in Pid at this point I have a very large integer<br>
> (and I see my error in that pattern), so do I have to get each single byte<br>
> of the 27 bytes composing the pid one by one or is there a pattern that<br>
> immediately matches that term giving me something that I can pass to<br>
> binary_to_term? I have experimented a little but I always obtain a no<br>
> matching clause...<br>
><br>
> Alessandro<br>
><br>
> --<br>
> Sivieri Alessandro<br>
> <a href="mailto:alessandro.sivieri@gmail.com">alessandro.sivieri@gmail.com</a><br>
> <a href="http://sivieri.wordpress.com/" target="_blank">http://sivieri.wordpress.com/</a><br>
<br>
</div>> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div>