String encoding/decoding
Rudolph van Graan
rvg@REDACTED
Wed Apr 16 15:57:48 CEST 2003
Hi all,
A couple of newbie questions here... Hope you can help
Suppose you have a string, for which the Hex representation looks
something like this:
021234053132333435
In reality the string is coded as this:
Byte 1: Length of Word [2 byte unsigned]
Bytes 2,3: High Byte, Low Byte of unsigned work
Byte 4: Length of string to following
Bytes 5-9: A 5 character string
So if I want to decode it, I would usually write some code that looks
like this [in pseudocode, doesn't imply any language]
Len1 = String.GetByte(1) //Returns a single byte
Word1 = String.GetWord(Len1) //Returns a word of len vLen1
Len2 = String.GetByte(1) //Returns a single byte
String1 = String.GetString(vLen2) //Returns the string "12345"
Now, my question is this. If I want to write an elegant module in
erlang, that decodes a complex string into its members [members can be
any type, being byte, word, string, etc etc] into an erlang structure,
how would I do that? We don't use ASN.1, so my question deals
specifically with raw strings. You can assume that the string is an
erlang list and that the output must be an erlang tuple. Also, I would
like to do exactly the reverse as well - generate these strings from
tuples.
I can imagine needing a function that takes 1/2/4 integers [byte values]
from the list and that builds a single 32bit signed/unsigned int and
also the reverse. The above example is quite simplistic, my typical
strings would contain a number of encoded elements, the structure of
which is known.
Any ideas or help would be really appreciated!
Regards,
Rudolph van Graan
More information about the erlang-questions
mailing list