How many different strings do you want to convert back and forth? For a 5 digit number, the maximum possible set of strings that you could map back and forth is under a million. It's a pretty straightforward result of the Pigeonhole Principle.

So if you want to do this, you're going to have to come up with rules to constrain your set of input strings to a set small enough to fit in the number of pigeonholes you have. *AND* you'll have to come up with a unique mapping between those strings and the numbers. (You, not us.)

The instant you have the possibility of mapping two different strings into the same number, you have lost information, and can no longer tell the two strings apart from the number. There's no way to reliably know which string to map the number to without some other source of information.

The number of the .html pages are < 100.
Please DON'T tell me to save both the pin <=> filepath and associate them (that can be done by SQL commands, i know)
I will not create any kind of primary/unique keys to the database.
I will not store the filepath into the database, just the number which indicates the filepath(html page).
Also no external table associating fielpaths and numbers.
i want this to be solved only by Python Code, not database oriented.

That is: I need to be able to map both ways, in a one to one relation, 5-digit-integer <=> string

int( hex ( string ) ) can encode a string to a number. Can this be decoded back? I gues that can also be decoded-converted back because its not losing any information. Its encoding, not compressing.

But it's the % modulo that breaks the forth/back association.

So, the question is:

HOW to map both ways, in a one to one relation, (5-digit-integer <=> string) without losing any information?

Just store the filename alongside the pin into the table and it'll work pretty well.

The only other way of mapping string to pin -- apart from the lookup table I've just typed out -- is enumerating over the possible filenames and hashing each in turn, comparing the result to the pin. There's no way around it with the constraints you stubbornly add.

Oh, by the way, with 100 files and 10k available (random-ish) identification numbers, you might hit the birthday paradox. About 60% probable, I think. You don't want a hashing function -- you want an integer sequence. Databases provide those.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other