<div dir="ltr">HI,<div><br></div><div>I prefer to keep the DNS labels as binaries, en/decoding them then becomes a simple list/binary comprehension:</div><div><br></div><div>encode_fqdn(FQDN) -></div>    << <<(size(Part)):8, Part/binary>> || Part <- FQDN >>.<br><div><br></div><div>decode_fqdn(FQDN) -><br>    [ Part || <<Len:8, Part:Len/bytes>> <= FQDN ].<br></div><div><br></div><div>Since you are working with 3GPP domains, you might be interested in more examples for 3GPP data structures. Checkout gtplib [1] and pfcplib [2].</div><div><br></div><div>Regards</div><div>Andreas</div><div><br></div><div>[1]: <a href="https://github.com/travelping/gtplib">https://github.com/travelping/gtplib</a></div><div>[2]: <a href="https://github.com/travelping/pfcplib">https://github.com/travelping/pfcplib</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Fr., 3. Juli 2020 um 15:45 Uhr schrieb Papa Tana <<a href="mailto:papa.tana101@gmail.com">papa.tana101@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">For beginners like me, let me share here 3 steps to easily understand:<br>
<br>
Input = ["TOPON", "S11", "NODE", "EPC", "MNC05", "MCC646",<br>
"3GPPNETWORK", "ORG"].<br>
<br>
> Wow = [ [string:len(X), X] || X <- Input ].<br>
<br>
[[5,"TOPON"],<br>
 [3,"S11"],<br>
 [4,"NODE"],<br>
 [3,"EPC"],<br>
 [5,"MNC05"],<br>
 [6,"MCC646"],<br>
 [11,"3GPPNETWORK"],<br>
 [3,"ORG"]]<br>
<br>
> list_to_binary( Wow ).<br>
<<5,84,79,80,79,78,3,83,49,49,4,78,79,68,69,3,69,80,67,5,<br>
  77,78,67,48,53,6,77,67,67,...>><br>
<br>
Have a nice week-end All,<br>
Best Regards,<br>
<br>
<br>
<br>
2020-07-03 15:31 UTC+03:00, Papa Tana <<a href="mailto:papa.tana101@gmail.com" target="_blank">papa.tana101@gmail.com</a>>:<br>
> @Hugo:<br>
>  I wanted to escape binary initially and that's why I converted my<br>
> Input as a List, and  worked with List and Tuple, but after many many<br>
> fastidious lines with no valuable  result, I gave up.<br>
><br>
> @Fernando:<br>
><br>
>   You did it with ONLY ONE SINGLE LINE with your Binary comprehensions.<br>
>   I still have definitely a lot to learn!!<br>
>   Thanks a ton.<br>
><br>
> Really appreciated,<br>
><br>
><br>
> 2020-07-03 12:56 UTC+03:00, Fernando Benavides <<a href="mailto:elbrujohalcon@gmail.com" target="_blank">elbrujohalcon@gmail.com</a>>:<br>
>> Or use binary comprehensions.<br>
>> Something along the lines of this totally untested code…<br>
>><br>
>> << << (length(Item)), (list_to_binary(Item))/binary >>  || Item <-<br>
>> tuple_to_list(Input) >>.<br>
>><br>
>> On Fri, Jul 3, 2020 at 11:48 AM Hugo Mills <<a href="mailto:hugo@carfax.org.uk" target="_blank">hugo@carfax.org.uk</a>> wrote:<br>
>><br>
>>> On Fri, Jul 03, 2020 at 10:43:22AM +0100, Hugo Mills wrote:<br>
>>> >    There's a tuple_to_list/1 function. Use that to start with, and<br>
>>> > then you can map over the list to generate a list of size/value<br>
>>> > binaries, converting one at a time. Then finally fold over that list<br>
>>> > to produce the final binary.<br>
>>> ><br>
>>> >    Alternatively, require the input to be a list in the first place,<br>
>>> > and you can skip the tuple_to_list/1 part. (But the rest is still<br>
>>> > necessary).<br>
>>><br>
>>>    Sorry, just realised I should have added:<br>
>>><br>
>>>    More fundamentally, work out how to do *one* thing (convert a<br>
>>> string to a length+data binary), then use the list functions to<br>
>>> map/filter/fold many of those into one result.<br>
>>><br>
>>>    Occasionally, you'll have to write a recursive function directly,<br>
>>> but it's rarer than you might think.<br>
>>><br>
>>>    Hugo.<br>
>>><br>
>>> --<br>
>>> Hugo Mills             | Well, sir, the floor is yours. But remember,<br>
>>> the<br>
>>> hugo@... <a href="http://carfax.org.uk" rel="noreferrer" target="_blank">carfax.org.uk</a> | roof is ours!<br>
>>> <a href="http://carfax.org.uk/" rel="noreferrer" target="_blank">http://carfax.org.uk/</a>  |<br>
>>> PGP: E2AB1DE4          |                                             The<br>
>>> Goons<br>
>>><br>
>><br>
>><br>
>> --<br>
>> <<a href="https://about.me/elbrujohalcon?promo=email_sig&utm_source=product&utm_medium=email_sig&utm_campaign=gmail_api&utm_content=thumb" rel="noreferrer" target="_blank">https://about.me/elbrujohalcon?promo=email_sig&utm_source=product&utm_medium=email_sig&utm_campaign=gmail_api&utm_content=thumb</a>><br>
>> Brujo Benavides<br>
>> <a href="http://about.me/elbrujohalcon" rel="noreferrer" target="_blank">about.me/elbrujohalcon</a><br>
>> <<a href="https://about.me/elbrujohalcon?promo=email_sig&utm_source=product&utm_medium=email_sig&utm_campaign=gmail_api&utm_content=thumb" rel="noreferrer" target="_blank">https://about.me/elbrujohalcon?promo=email_sig&utm_source=product&utm_medium=email_sig&utm_campaign=gmail_api&utm_content=thumb</a>><br>
>><br>
><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><p><span style="font-family:verdana,geneva,sans-serif;font-size:10pt">Andreas Schultz</span></p>
<p><span style="font-family:verdana,geneva,sans-serif;font-size:10pt">-- </span></p>
<p><span style="font-family:verdana,geneva,sans-serif;font-size:8pt">Principal Engineer</span></p>
<p><span style="font-family:verdana,geneva,sans-serif;font-size:10.6667px">  t: +49 391 819099-224 </span></p>
<p><span style="font-family:verdana,geneva,sans-serif;font-size:8pt"><span style="font-family:verdana,geneva,sans-serif;font-size:10.6667px"></span></span></p>
<p><span style="font-family:verdana,geneva,sans-serif;font-size:8pt">------------------------------- enabling your networks -----------------------------</span></p>
<table style="height:142px;width:550px">
<tbody>
<tr style="height:30px">
<td style="width:146px;height:30px">
<p><span style="font-family:verdana,geneva,sans-serif;color:rgb(34,34,34);font-size:8pt">Travelping GmbH <br></span><span style="font-family:verdana,geneva,sans-serif;color:rgb(34,34,34);font-size:8pt">Roentgenstraße 13<br></span><span style="font-family:verdana,geneva,sans-serif;color:rgb(34,34,34);font-size:8pt">39108 Magdeburg<br></span><span style="font-family:verdana,geneva,sans-serif;color:rgb(34,34,34);font-size:8pt">Germany<br><br></span></p>
</td>
<td style="width:162px;height:30px">
<p style="color:rgb(34,34,34);font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:small;text-align:justify"><span style="font-family:verdana,geneva,sans-serif;font-size:8pt">t: +49 391 819099-0<br></span><span style="font-family:verdana,geneva,sans-serif;font-size:8pt">f: +49 391 819099-299</span></p>
<p style="color:rgb(34,34,34);font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:small;text-align:justify"><span style="font-family:verdana,geneva,sans-serif;font-size:8pt">e: <a href="mailto:info@travelping.com" target="_blank">info@travelping.com</a><br></span><span style="font-family:verdana,geneva,sans-serif;font-size:8pt">w: <a href="https://www.travelping.com/" target="_blank">https://www.travelping.com/</a></span></p>
</td>
</tr>
<tr style="height:17px">
<td style="width:146px;height:17px"><span style="font-size:8pt;font-family:verdana,geneva,sans-serif">Company registration: Amtsgericht Stendal <br>Managing Director: Holger Winkelmann<br></span></td>
<td style="width:162px;height:17px"><span style="font-size:8pt;font-family:verdana,geneva,sans-serif">Reg. No.: HRB 10578<br>VAT ID: DE236673780</span></td>
</tr>
</tbody>
</table></div>