我使用sendto
如下所示通过UDP套接字发送一些文本。
char *buf = "hello";
sendto(s, buf, strlen(buf)+1, 0, (struct sockaddr *) &si_other, slength);
我想在字符串的末尾添加一个哈希值。我打算使用DJB2 function on this link。
但是该函数生成一个太长的哈希值(261238937 =“hello”),因为我将它转换为字符串并将更多的元素扩展char数组。因此,我计划将unsigned long
替换为生成较短(12441)值的uint16_t
。
uint16_t hash(unsigned char *str){
uint16_t long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
我想知道这种修改是否会导致算法出现问题?如何才能使代码“以字节顺序”?