Wie cast von unsigned long auf unsigned char*?

Ich versuche, hash eine unsigned long Wert, aber die hash-Funktion nimmt ein unsigned char * ab, wie Sie sich in der Umsetzung unten:

unsigned long djb2(unsigned char *key, int n)
{
    unsigned long hash = 5381;
    int i = 0;
    while (i < n-8) {
        hash = hash * 33 + key[i++];
        hash = hash * 33 + key[i++];
        hash = hash * 33 + key[i++];
        hash = hash * 33 + key[i++];
        hash = hash * 33 + key[i++];
        hash = hash * 33 + key[i++];
        hash = hash * 33 + key[i++];
        hash = hash * 33 + key[i++];
    }
    while (i < n)
        hash = hash * 33 + key[i++];
    return hash;
}

Gibt es eine Möglichkeit, kann ich mein Ziel erreichen, vielleicht mit einer Besetzung zwischen den beiden?

reinterpret_cast, aber es ist hässlich. Was die hashing-Funktion ist char*?
reinterpret_cast ist C++, die Frage ist für C.
es ist vielleicht nur mich, aber ich denke, dass es mehr Kontext ( dh mehr code ) in dieser Frage.
Es war nicht getaggt, wenn ich kommentiert 😉
aus einen Blick auf die Funktion, Sie besser hoffen, dass Ihre long ist 8 Byte lang. ansonsten verwenden Sie lange, lange. andernfalls erhalten Sie möglicherweise die Segmentierung Fehler

InformationsquelleAutor James | 2013-05-14

Schreibe einen Kommentar