C#将字节数组转换为int始终相同的数字

Mat*_*ips 1 c# byte

我有一个方法将字节数组转换为整数

public int Encode(string input)
{
    var bytes = Encoding.Unicode.GetBytes(input.ToLowerInvariant());
    return BitConverter.ToInt64(bytes,0);
}
Run Code Online (Sandbox Code Playgroud)

为什么这个整数对于任何输入字符串都没有区别?

例如

input = "http://www.google.com => 31525695615402088

input = "http://www.microsoft.com => 31525695615402088

Wil*_*den 6

因为64位是8个字节,所以ToInt64只消耗输入数组的前8个字节.您使用的字符串的前八个字节是什么?

并且,正如alexm所说,Encoding.Unicode指定UTF-16,其中每个字符实际上是两个字节(通常),因此只有前4个字符计数.