On Mar 25, 9:22 pm, "Terry Reedy" <[EMAIL PROTECTED]> wrote:
> "Alvin Delagon" <[EMAIL PROTECTED]> wrote in message
>
> news:[EMAIL PROTECTED]
> | Hello,
> |
> | >>> hash("foobar")
> | -1969371895
> |
> | Anyone can explain to me how the hash() function in python does its work?
> A
> | link to its source could help me a lot also. I'm looking for a way to
> | replicate this function in php. Thanks in advance.
>
> If not part of your installation, start with svn.python.org and click
> browse.  I would look for builtins.c or somesuch.

It's in stringobject.c:

static long
string_hash(PyStringObject *a)
{
        register Py_ssize_t len;
        register unsigned char *p;
        register long x;

        if (a->ob_shash != -1)
                return a->ob_shash;
        len = Py_Size(a);
        p = (unsigned char *) a->ob_sval;
        x = *p << 7;
        while (--len >= 0)
                x = (1000003*x) ^ *p++;
        x ^= Py_Size(a);
        if (x == -1)
                x = -2;
        a->ob_shash = x;
        return x;
}
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to