Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!nntp-feed.chiark.greenend.org.uk!ewrotcd!news.nosignal.org!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.007 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'python.': 0.02; 'paths': 0.05; 'lookup': 0.09; 'path)': 0.09; 'subject:method': 0.09; 'subject:number': 0.09; 'subject:string': 0.09; 'subject:using': 0.09; 'to:addr:comp.lang.python': 0.09; 'cc:addr:python-list': 0.10; 'coding?': 0.16; 'duplicates': 0.16; 'limit,': 0.16; 'storing': 0.16; 'subject:Converting': 0.16; 'worse.': 0.16; 'previously': 0.18; 'posted': 0.22; 'cc:2**0': 0.23; 'example': 0.23; 'random': 0.24; 'cc:addr:python.org': 0.25; 'header:In- Reply-To:1': 0.25; 'header:User-Agent:1': 0.26; '(which': 0.26; 'implemented': 0.27; 'opposed': 0.27; 'mod': 0.29; 'perl': 0.29; 'remotely': 0.29; 'that.': 0.30; 'file': 0.32; 'received:google.com': 0.34; 'path': 0.35; 'table': 0.35; 'received:209.85': 0.35; 'there': 0.35; 'explain': 0.36; 'but': 0.36; 'anything': 0.36; 'turn': 0.36; 'received:209': 0.37; 'subject:: ': 0.38; 'possible.': 0.38; 'page': 0.38; 'your': 0.60; 'identify': 0.61; 'back': 0.62; 'maximum': 0.63; 'more': 0.63; '10000': 0.65; 'differences': 0.65; 'pin': 0.65; '8bit%:100': 0.70; '8bit%:92': 0.70; 'guaranteed': 0.76; '2013': 0.84; 'luck': 0.93; 'anymore,': 0.95 X-Received: by 10.182.50.40 with SMTP id z8mr580905obn.36.1358879857487; Tue, 22 Jan 2013 10:37:37 -0800 (PST) Newsgroups: comp.lang.python Date: Tue, 22 Jan 2013 10:37:36 -0800 (PST) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=94.68.70.179; posting-account=DYJQ-woAAACEPH85Au2BhUVfFTfSfVa4 References: <4339f8d7-2d78-450f-ad0e-91da35615e6d@googlegroups.com> User-Agent: G2/1.0 X-Google-Web-Client: true X-Google-IP: 94.68.70.179 MIME-Version: 1.0 Subject: Re: Converting a string to a number by using INT (no hash method) From: Ferrous Cranus To: comp.lang.python@googlegroups.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: "python-list@python.org" X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Message-ID: Lines: 47 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1358879867 news.xs4all.nl 6979 [2001:888:2000:d::a6]:44961 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:37330 =CE=A4=CE=B7 =CE=A4=CF=81=CE=AF=CF=84=CE=B7, 22 =CE=99=CE=B1=CE=BD=CE=BF=CF= =85=CE=B1=CF=81=CE=AF=CE=BF=CF=85 2013 7:24:26 =CE=BC.=CE=BC. UTC+2, =CE=BF= =CF=87=CF=81=CE=AE=CF=83=CF=84=CE=B7=CF=82 Leonard, Arah =CE=AD=CE=B3=CF= =81=CE=B1=CF=88=CE=B5: > > No need, to turn the number back to a path anymore, just the path to a = number, to identify the specific .html page >=20 > >=20 >=20 > > Can this be done? >=20 >=20 >=20 > Guaranteed to be unique? Not even remotely possible. Even with a lookup= table approach (which defeats your purpose of not storing the path) with 4= digits you're looking at a maximum 10000 unique file paths before your sys= tem duplicates numbers. And that's the best-case scenario. Anything else = would be worse. >=20 >=20 >=20 > Not guaranteed to be unique? Easy. Just take then previously given exam= ple of pin =3D int( htmlpage.encode("hex"), 16 ) and mod it to your limit, = to make: >=20 > pin =3D int( htmlpage.encode("hex"), 16 ) % 10000 >=20 > It'll give you your number, but there are no guarantees of uniqueness. Y= ou're looking at more blind random luck using that. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D pin =3D int( htmlpage.encode("hex"), 16 ) % 10000=20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Can you please explain the differences to what you have posted opposed to t= his perl coding? =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D foreach my $ltr(@ltrs){ $hash =3D ( $hash + ord($ltr)) %10000; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D I want to understand this and see it implemented in Python.