MD5 哈希值是一个 128 位数字。因此,为了获得最佳性能,您应该保留所有 128 位。
鉴于您的函数将 128 位哈希值作为字符串,您需要将该字符串解析为一系列 4 个整数。你的字符串可能看起来像这样:
79054025255fb1a26e4bc422aef54eb4
那是一个 32 字节的十六进制字符串。如果是这样,您可以像这样提取二进制版本:
int v1, v2, v3, v4;
sscanf( &fingerprint[0], "%x", &v1 );
sscanf( &fingerprint[8], "%x", &v2 );
sscanf( &fingerprint[16], "%x", &v3 );
sscanf( &fingerprint[24], "%x", &v4 );
你现在做什么实际上取决于你希望哈希值有多好。如果您确实需要使用 32 位数字,那么只需将所有这些数字异或在一起即可:
int hash = v1 ^ v2 ^ v3 ^v4;