2008-12-22 13 views
6

Tengo una lista de direcciones (de 64 bits) que representan un marco de pila, y quiero agruparlas en un solo número de 64 bits para ayudar a identificar las que han sido visto antes. Hay como mucho 128 direcciones.Buen algoritmo de hash para la lista de direcciones (de memoria)

Mi algoritmo actual calcula el hash al iterar a través de la lista, xor'ing cada dirección en el hash y girando el hash en 11 bits por ciclo.

¿Alguna mejor sugerencia?

+0

¿Por qué los hash y no los has lanzado a intptr_t (asumiendo C)? – Christoph

+0

Creo que está intentando verificar las rutas del programa. Está tratando de guardar una ruta de direcciones de 64 bits. La respuesta CRC64 me parece bien. – Harvey

+0

Quiere codificar la lista completa - No lo entendí, gracias por la aclaración ... – Christoph

Respuesta

4

usted podría considerar algún tipo de CRC.

Quizás un CRC64.

+0

CRC no debe usarse como hash, tiene un comportamiento de colisión muy malo. – martinus

0

Si el rendimiento no es un problema, podría intentar un hash criptográfico: truncar a la cantidad de bytes que desee.

Cuestiones relacionadas