易语言置入汇编GetRolHash

DWORD GetRolHash(char lpszBuffer)

{

DWORD dwHash = 0;

while(lpszBuffer)

{

dwHash = (  (dwHash <<25 ) | (dwHash>>7) );

dwHash = dwHash+*lpszBuffer;

lpszBuffer++;

}

return dwHash;

}

     

       某项工作中使用到计算hash值,于是想使用易语言写一个工具,

但是易语言一直很诡异,计算不出正确值.导致原因可能由于易语言中没有DWORD类型,并且整数四则运算是当作双精度浮点数来计算,搞得很纠结.

无奈写了个置入汇编版的,经过测试,完美无bug

.版本 2 .支持库 spec .程序集 程序集1 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 ' 多次计算为了测试否是堆栈有问题 .计次循环首 (11, ) 调试输出 (GetRolHash (“”)) .计次循环尾 () 返回 (0) ' 可以根据您的需要返回任意数值 .子程序 GetRolHash, 文本型 .参数 string, 文本型 .局部变量 nHash, 整数型 nHash = GetRolHash0 (取变量数据地址 (string)) 返回 (“0x” + 取十六进制文本 (nHash)) .子程序 GetRolHash0, 整数型 .参数 string, 整数型 置入代码 ({ 137, 236, 93, 139, 84, 36, 4, 51, 201, 235, 9, 193, 201, 7, 15, 190, 192, 3, 200, 66, 138, 2, 132, 192, 117, 241, 139, 193, 195 }) 返回 (0)
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注