我正在尝试将字符串转换为无符号字符 *。我一直在兜圈子。我的程序提示用户输入我作为字符串输入的姓氏。然后我使用 djb2 将字符串散列成一个整数。它将 unsigned char * 作为参数。我的程序的目标是使用链接创建一个哈希表来处理冲突。
unsigned long djb2(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
我的代码如下atm。
void insert(LinkedList<Person>* HashList1[], LinkedList<Person>* HashList2[], int listSize)
{
char * cstr;
string str;
cin >> str;
cstr = new char [str.size()+1];
strcpy (cstr, str.c_str());
int hashBucket1 = djb2(cstr) % listSize;
}
我收到一个错误,上面告诉我““char *”类型的参数与“unsigned char *”类型的参数不兼容。非常感谢任何帮助