我在对一个老游戏使用的归档文件格式进行逆向工程时,发现它使用以下函数(手动反编译)对文件名进行哈希处理:
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;
}我想知道这是不是什么标准的东西,或者只是开发人员随机选择的东西。
发布于 2011-01-06 16:40:10
它不代表任何标准的散列函数,只是简单的“手工”。
https://stackoverflow.com/questions/4613075
复制相似问题