Birisi hash fonksiyonu/algoritması hakkında biraz ışık tutabilir misiniz Perl dizeyi bir dizine eşlemek için kullanır? İlgili herhangi bir okuma? hv.h
tanımlananPerl hangi karma işlevini/algoritmasını kullanır?
9
A
cevap
15
PERL_HASH_INTERNAL_
aşağıda kopyalanan:
/* hash a key */
/* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins
* from requirements by Colin Plumb.
* (http://burtleburtle.net/bob/hash/doobs.html) */
/* The use of a temporary pointer and the casting games
* is needed to serve the dual purposes of
* (a) the hashed data being interpreted as "unsigned char" (new since 5.8,
* a "char" can be either signed or unsigned, depending on the compiler)
* (b) catering for old code that uses a "char"
*
* The "hash seed" feature was added in Perl 5.8.1 to perturb the results
* to avoid "algorithmic complexity attacks".
*
* If USE_HASH_SEED is defined, hash randomisation is done by default
* If USE_HASH_SEED_EXPLICIT is defined, hash randomisation is done
* only if the environment variable PERL_HASH_SEED is set.
* For maximal control, one can define PERL_HASH_SEED.
* (see also perl.c:perl_parse()).
*/
#define PERL_HASH_INTERNAL_(hash,str,len,internal) \
STMT_START { \
register const char * const s_PeRlHaSh_tmp = str; \
register const unsigned char *s_PeRlHaSh = (const unsigned char *)s_PeRlHaSh_tmp; \
register I32 i_PeRlHaSh = len; \
register U32 hash_PeRlHaSh = (internal ? PL_rehash_seed : PERL_HASH_SEED); \
while (i_PeRlHaSh--) { \
hash_PeRlHaSh += *s_PeRlHaSh++; \
hash_PeRlHaSh += (hash_PeRlHaSh << 10); \
hash_PeRlHaSh ^= (hash_PeRlHaSh >> 6); \
} \
hash_PeRlHaSh += (hash_PeRlHaSh << 3); \
hash_PeRlHaSh ^= (hash_PeRlHaSh >> 11); \
(hash) = (hash_PeRlHaSh + (hash_PeRlHaSh << 15)); \
} STMT_END
İlgili konular
- 1. Perl: Perl bir karma değer
- 2. Perl içindeki yazdırma karma
- 3. httpclient hangi portu kullanır?
- 4. PHP hangi sıralama algoritmasını kullanır?
- 5. Titanyum hangi JavaScript sürümünü kullanır?
- 6. SOAP hangi port numarasını kullanır?
- 7. IEEE 754 hangi dilleri kullanır?
- 8. MySQL hangi sıralama algoritmalarını kullanır?
- 9. Tumblr hangi şablon dilini kullanır?
- 10. Paint.setStrokeWidth() hangi ölçü birimini kullanır?
- 11. Karma referansı multiithread perl ile nasıl paylaşılır?
- 12. Perl: Karma anahtarların düzenli bir ifadeyle eşleştirilmesi
- 13. NSURLCache hangi önbelleğe alma algoritmasını kullanır?
- 14. sorgusu filtrelemek için hangi desen kullanır? C#
- 15. .NET FormsAuthentication.Encrypt() yöntemi hangi şifreleme yöntemini kullanır?
- 16. Google Analytics API hangi saat dilimi kullanır?
- 17. Hangi karma algoritması en uzun çıkışı sağlıyor?
- 18. Hash değerleri hangi karma değeri boş bırakılır?
- 19. Perl Hash
- 20. Perl: Paylaşılan çok boyutlu karma ile iş parçacığı
- 21. Perl bir karma bir elektronik tabloya veri dökümü
- 22. dönüştürme dize $ karma "abc" -> {a} -> {b} - Perl
- 23. Hangi php.ini dosyası symfony sunucusu kullanır: run komutu?
- 24. Perl haritası -
- 25. ASP.NET'te MachineKey için kullanır
- 26. GCC Profili Kılavuzlu Optimizasyon (PGO) hangi bilgileri toplar ve hangi optimizasyonlar kullanır?
- 27. SQL Bigint karma karma
- 28. Karma
- 29. karma
- 30. Perl regex'in hangi kısmının bir dizeyle eşleştirildiğini nasıl bilebilirim?
yapmaya çalışıyorsun sen? Çalışmayan bazı kodlara örnek verebilir misiniz? –
Bir çarpışma yaratacak herhangi bir anahtar :) – Jean
Her zaman çarpışacak iki anahtar yoktur. Karma, gerektiğinde rastgele bozulur. – ikegami