2011-01-06 141 views
2

我被反向工程通過一個老遊戲中使用的存檔文件格式,並且發現它使用下面的函數(用手反編譯)散列文件名:什麼是散列函數?

int hash(char* filename) { 
    unsigned int a = 0; 
    int b = 0; 
    for(int i = strlen(filename)-1; i>=0; i--) 
    char c = toupper(filename[i]); 
    a=(a<<5)+(a>>25); 
    b+=c; 
    a+=b+c; 
    } 
    return a; 
} 

我想知道,如果這是什麼標準,或者如果它只是開發人員隨機挑選的東西。

+0

你能告訴我們這是什麼遊戲嗎?相當現代的隨機數生成函數基於相同的想法 – 2011-01-06 08:45:09

回答

2

它不代表任何標準的散列函數,只是簡單的'手工製作'。