in reply to Re: integer encoder/decoder
in thread integer encoder/decoder

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?

Replies are listed 'Best First'.
•Re: Re: Re: integer encoder/decoder
by merlyn (Sage) on Mar 13, 2003 at 20:52 UTC
    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.