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]; 的结果都是不一样的!

    
    
  • 相关阅读:
    hdoj 2063 过山车
    hdoj 2112 HDU Today
    hdoj 1874 畅通工程续
    hdoj 2544 最短路
    sound of the genuine
    复习webpack的常用loader
    node-sass安装报错
    react-debug
    react-router 4v 路由嵌套问题
    React 中使用sass
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1674596.html
Copyright © 2011-2022 走看看