2008-12-22 15 views
6

Yığın çerçevesini temsil eden (64 bit) adreslerin bir listesine sahibim ve bunları olanları tanımlamaya yardımcı olmak için bunları tek bir 64 bit numaraya dönüştürmek istiyorum daha önce görülmüş. En fazla 128 adres var.(bellek) adreslerinin listesi için iyi karma algoritması

Geçerli algoritmam, her bir adresi karma değere xor'leyerek ve karma döngüyü döngü başına 11 bit döndürerek, karma sayısını listeye alarak hesaplar.

Daha iyi bir öneri?

+0

Niçin bunları tamamen ve sadece intptr_t (C'yi varsayarak) yapmak için değil mi? – Christoph

+0

Sanırım program yollarını kontrol etmeye çalışıyor. 64 bit adres yolunu kaydetmeye çalışıyor. CRC64 cevabı bana iyi görünüyor. – Harvey

+0

Tüm listeyi ele almak istiyor - Bunu anlamadım, açıklama için teşekkürler ... – Christoph

cevap

4

Sen CRC çeşit düşünebilirsiniz.

Belki de CRC64.

+0

CRC karma olarak kullanılmamalıdır, çok kötü çarpışma davranışı vardır. – martinus

0

Eğer performans bir problem değilse, kriptografik hash - kesmeyi kaç bayta istediğinize deneyebilirsiniz.

İlgili konular