我正在对旧游戏使用的存档文件格式进行逆向工程,并发现它使用以下函数散列文件名(手工反编译):
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 :(得分:2)
它不代表任何标准哈希函数,只是简单的'手工制作'。