fixed (char* str = ((char*)s))
这句应该怎么改
还有
5^3=6
4^3=7
3^3=0
怎么计算出来的
internal static unsafe int GetStringHashCode(string s)
{
fixed (char* str = ((char*)s))
{
char* chPtr = str;
int num = 0x15051505;
int num2 = num;
int* numPtr = (int*)chPtr;
for (int i = s.Length; i > 0; i -= 4)
{
num = (((num << 5) + num) + (num >> 0x1b)) ^ numPtr[0];
if (i <= 2)
{
break;
}
num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1];
numPtr += 2;
}
return (num + (num2 * 0x5d588b65));
}
}
这句应该怎么改
还有
5^3=6
4^3=7
3^3=0
怎么计算出来的
internal static unsafe int GetStringHashCode(string s)
{
fixed (char* str = ((char*)s))
{
char* chPtr = str;
int num = 0x15051505;
int num2 = num;
int* numPtr = (int*)chPtr;
for (int i = s.Length; i > 0; i -= 4)
{
num = (((num << 5) + num) + (num >> 0x1b)) ^ numPtr[0];
if (i <= 2)
{
break;
}
num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1];
numPtr += 2;
}
return (num + (num2 * 0x5d588b65));
}
}
4^3=7
3^3=0
该问题已经知道无需再做解答。fixed (char* str = ((char*)s))这问题才是代码运行的关键