in reply to integer encoder/decoder

You want to encode a nine digit number and an ip address into a nine digit number in such a way that you can recreate the original data on demand? And something makes you belive this is possible? If your requirement was to get it down to nine characters and didn't require them to be numeric, then you could do it, but if you want to encode 9+ digits of numbers into 9 digits of numbers, it is going to be an irreversible procedure.


We're not surrounded, we're in a target-rich environment!

Replies are listed 'Best First'.
Re: Re: integer encoder/decoder
by Anonymous Monk on Mar 13, 2003 at 18:39 UTC
    I realized that might be the case, which is why I stated that I could live without the ability to decode the number, as long as the resulting number is unique and 9 digits or less.

    For example...

    I dont want "IP1" and "Sessionid1" to ever produce a 9 digit number that can be produced by any other "IP" and "Sessionid" combination. The encoding is really the vital part.

    Any ideas?
      I dont want "IP1" and "Sessionid1" to ever produce a 9 digit number that can be produced by any other "IP" and "Sessionid" combination. The encoding is really the vital part.
      This is not possible. You want a 9-digit session-ID number (about 30 bits of information) to be added to an IP address (about 14 or 15 bits of info, depending on how you throw out invalid network numbers), resulting in only a 9-digit number (about 30 bits of info again).

      You can't do it. You can't fit 45 bits of info into 30 bits of output, without some of them overlapping.

      You'll need to think of a different strategy. You can't even fit it into 9 hex characters (36 bits of info). If you insist on nine output symbols, you'll need to use some larger base, something with at least 5 bits of info per symbol, like base 36 encoding with 0-9 and a-z.

      -- Randal L. Schwartz, Perl hacker
      Be sure to read my standard disclaimer if this is a reply.