我有以下代码,比inet_addr快约7倍.我想知道是否有办法改进这个以使其更快或者如果存在更快的替代方案.
这段代码要求提供一个有效的空终止IPv4地址,没有空格,在我的情况下总是如此,所以我针对这种情况进行了优化.通常你会有更多的错误检查,但如果有办法使更快或更快的替代存在,我会非常感激.
UINT32 GetIP(const char *p)
{
UINT32 dwIP=0,dwIP_Part=0;
while(true)
{
if(p[0] == 0)
{
dwIP = (dwIP << 8) | dwIP_Part;
break;
}
if(p[0]=='.')
{
dwIP = (dwIP << 8) | dwIP_Part;
dwIP_Part = 0;
p++;
}
dwIP_Part = (dwIP_Part*10)+(p[0]-'0');
p++;
}
return dwIP;
}
Run Code Online (Sandbox Code Playgroud) 如果我有一些数据,我会像这样使用 SHA256 进行哈希处理:- hash=SHA256(data)
然后只复制哈希的前 8 个字节而不是整个 32 个字节,找到不同数据的哈希冲突有多容易?是 2^64 还是 2^32 ?
如果我需要将某些数据的哈希减少到较小的大小(n 位),有什么方法可以确保搜索空间 2^n ?