64位进程池HashCode兼容处理

背景

net旧项目使用32位生成的HashCode,存储到数据库中。迁移到64位上,就需要对HashCode做兼容处理。

解决方案

1:进程池配置支持32位程序。

2:对Hashcode做兼容处理,【推荐】。

兼容实现

 static void Main(string[] args)
        {

            string test = "hello";

            //-327419862  64位下
            //-695839  32位下
            int bit = test.GetHashCode();

            int hashCode = CompatibleHash("hello");
        }
        /// <summary>
        /// 64位环境下,生成兼容32位的hashCode。
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static unsafe int CompatibleHash(string str)
        {
            fixed (char* charPtr = new String(str.ToCharArray()))
            {
                int hashCode = (5381 << 16) + 5381;
                int numeric = hashCode;
                int* intPtr = (int*)charPtr;
                for (int i = str.Length; i > 0; i -= 4)
                {
                    hashCode = ((hashCode << 5) + hashCode + (hashCode >> 27)) ^ intPtr[0];

                    if (i <= 2) break;
                    numeric = ((numeric << 5) + numeric + (numeric >> 27)) ^ intPtr[1];
                    intPtr += 2;
                }
                return hashCode + numeric * 1566083941;
            }
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Kotlin入门系列

win7基础 cmd 查看当前已经启动的服务列表

5066
来自专栏bboysoul

如何在metasploit中使用shodan

首先打开metasploit sudo service postgresql start msfconsole

1203
来自专栏Android常用基础

应用自动更新封装-Android

应用更新应该是现在每个应用必备的一个功能。正是通过不断的更新,不断的调优,才使我们的应用更完善。当然在各大应用市场中,它们已经帮我们实现了这项功能,但是有一个问...

1671
来自专栏码匠的流水账

解决jd-gui在Sierra下闪退问题

在升级了mac操作系统到Sierra版本之后,之前的jd-gui就闪退了,本文就讲述一下如何解决这个问题。

2411
来自专栏Android源码框架分析

Android权限检查API checkSelfPermission失效问题为什么targetSdkVersion < 23 Context 的 checkSelfPermission失效target

5863
来自专栏向治洪

android PakageManagerService启动流程分析

PakageManagerService的启动流程图 ? 1.PakageManagerService概述 PakageManagerService是andro...

49310
来自专栏吴伟祥

Linux命令缩写英文对照记忆(〇) 转

1052
来自专栏ml

离线网页制作器(beta1.0)

1 package hhuarongdao; 2 /* 3 *使用方法: 先选择保存路径,然后输入相应的网址, 4 *然后会得到那个网页的离...

49512
来自专栏GIS讲堂

Highcharts导出图片

Highcharts是在做项目涉及到统计图的时候大家的首选,同时也会用到highcharts的export功能,将统计图导出为图片,刚好,最近也遇到了这样的事情...

4392
来自专栏FreeBuf

SniffAir:无线渗透测试框架

SniffAir是一个开源的无线安全框架,可帮助你轻松解析被动收集的无线数据并发起复杂的无线渗透测试。此外,它还可以处理大型的或多个pcap文件,执行交叉检查和...

922

扫码关注云+社区

领取腾讯云代金券