zoukankan      html  css  js  c++  java
  • 关于WinCE和PC中同一字符串的GetHashCode()结果不同的理解

    前几天碰到一个问题是这样的:我在博问里边提了下:

    问题地址是:http://space.cnblogs.com/question/12395/

    在x86的PC上对于一个字符串使用GetHashCode()获取一个字符串的Hash

    (在PC上试验了WinForm和Asp.Net,结果是一样的)

    在Xscale CPU的WinCE上边对于同样的字符串也使用GetHashCode()获取Hash

    (在WinCE设备上和PPC2003、WM5、WM6模拟器的模拟器上结果都相同)

    然后比较发现他们俩不一样!这是为什么呢?

    刚才Google了一下,有说对于同样一个对象X86和X64平台下GetHashCode()的结果是不一样的。

    为什么不一样没说。

    Google使用关键字GetHashCode CPU 结果令人失望!

    今天又想起来这个问题。于是用Reflector察看了一下System.String.GetHashCode(); 恍然大悟。

    GetHashCode()代码如下:

     

    MSDN上说fixed是不支持CF的.所以CF下肯定用了别的函数。CF的mscorelib.dll反编译回来只有函声明,没有实现,没法比较。

    还用到了指针,在.Net下变我都没用过指针呢! 感觉就是一些字符变换的东西! 使用指针就跟CPU架构有关

    CF的反编译回来什么都没有.没法比较!

    总的感觉是:

    1、GetHashCode() 跟.NET环境有关,因为函数可能不同...

    2、跟CPU架构有关,因为不同CPU中

    int num = 0x15051505;

    int 型的溢出值

    int* numPtr  指针的地址范围

    尤其是移位操作num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1]; 的结果都是不一样的!

    
    
  • 相关阅读:
    Codeforces 1265A Beautiful String
    1039 Course List for Student (25)
    1038 Recover the Smallest Number (30)
    1037 Magic Coupon (25)
    1024 Palindromic Number (25)
    1051 Pop Sequence (25)
    1019 General Palindromic Number (20)
    1031 Hello World for U (20)
    1012 The Best Rank (25)
    1011 World Cup Betting (20)
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1674596.html
Copyright © 2011-2022 走看看