⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数据库开发md5算法在pb里面地完成[库库中文网]-系统编程教程 qqgb_com.htm

📁 MD5算法在PB里面地完成(html版)
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">/*******************************************************************</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">函数名称:of_bitwisenot()</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">参数:&nbsp;&nbsp;&nbsp;&nbsp; as_bitvalue string 二进制值</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">返回值:&nbsp;string 反码</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">功能描述:求二进制反码</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">创建人:&nbsp; 康剑民</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">创建日期:2004-05-23</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">版本号:&nbsp;&nbsp;&nbsp; v1.0.0&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">*******************************************************************/</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_cnt, li_count</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ll_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_value, ls_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//检查参数</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if isnull(as_bitvalue) then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setnull(ls_result)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ls_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">li_cnt = lenw(as_bitvalue)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//将0变为1,1变为0</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">for li_count = 1 to li_cnt</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if midw(as_bitvalue, li_count, 1) = '0' then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_result = ls_result + '1'</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_result = ls_result + '0'</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end for</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">return ls_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end function</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">public function string of_bitwisefill (string as_bitvalue);</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">/*******************************************************************</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">函数名称:of_bitwisefill()</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">参数:&nbsp;&nbsp;&nbsp;&nbsp; as_bitvalue string 二进制值</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">返回值:&nbsp;string 补码</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">功能描述:求二进制补码(要求前四位为符号位,1111表示负数,0000表示正数)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">创建人:&nbsp; 康剑民</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">创建日期:2004-05-23</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">版本号:&nbsp;&nbsp;&nbsp; v1.0.0&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">*******************************************************************/</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_cnt, li_count,li_pos</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ll_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_value, ls_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">boolean lb_exit=false</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//检查参数</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if isnull(as_bitvalue) then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setnull(ls_result)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ls_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//正数的补码为其本身</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if leftw(as_bitvalue,4) = '0000' then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return as_bitvalue</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">else</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //负数的补码为反码加1</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; as_bitvalue = midw(as_bitvalue,5,lenw(as_bitvalue))</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //求反码</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_result = this.of_bitwisenot(as_bitvalue)&nbsp;&nbsp;&nbsp; </div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //低位加1</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_pos = lastpos(ls_result,'0')</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if li_pos = 0 then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_result = fill('0',li_count)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_result = leftw(ls_result,li_pos - 1) + '1' + fill('0',lenw(ls_result) - li_pos)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fill('1',4) + fill('0',ceiling(lenw(ls_result) / 4) * 4 - lenw(ls_result)) + ls_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end function</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">public function long of_bitwiseand (long al_value1, long al_value2);</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">/*******************************************************************</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">函数名称:of_bitwiseand()</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">参数:&nbsp;&nbsp;&nbsp;&nbsp; al_value1 long 值1</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;al_value2 long 值2</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">返回值:&nbsp;long 按位与运算后的结果</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">功能描述:按位与运算</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">创建人:&nbsp; 康剑民</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">创建日期:2004-05-23</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">版本号:&nbsp;&nbsp;&nbsp; v1.0.0&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">*******************************************************************/</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_cnt,li_len</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ll_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">string &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_bitvalue1,ls_bitvalue2,ls_return,ls_sign</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//检查参数</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if isnull(al_value1) or isnull(al_value2) then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setnull(ll_result)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ll_result</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">ls_bitvalue1 = this.of_binary(al_value1)//取值1的二进制值</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">ls_bitvalue2 = this.of_binary(al_value2)//取值2的二进制值</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//删除符号位</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if leftw(ls_bitvalue1,1) = '-' then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_bitvalue1 = midw(ls_bitvalue1,2,lenw(ls_bitvalue1))</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if leftw(ls_bitvalue2,1) = '-' then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_bitvalue2 = midw(ls_bitvalue2,2,lenw(ls_bitvalue2))</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//取参与运算的二进制值长度</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">li_len = max(lenw(ls_bitvalue1),lenw(ls_bitvalue2))</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">li_len = ceiling(li_len / 4) * 4</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//补位</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">ls_bitvalue1 = fill('0',li_len - lenw(ls_bitvalue1)) + ls_bitvalue1</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">ls_bitvalue2 = fill('0',li_len - lenw(ls_bitvalue2)) + ls_bitvalue2</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//加符号位</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if al_value1 &lt; 0 then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_bitvalue1 = fill('1',4) + ls_bitvalue1</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">else</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_bitvalue1 = fill('0',4) + ls_bitvalue1</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">if al_value2 &lt; 0 then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_bitvalue2 = fill('1',4) + ls_bitvalue2</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">else</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_bitvalue2 = fill('0',4) + ls_bitvalue2</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">end if</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//取补码</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">ls_bitvalue1 = this.of_bitwisefill(ls_bitvalue1)//取值1的二进值补码</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">ls_bitvalue2 = this.of_bitwisefill(ls_bitvalue2)//取值2的二进值补码</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">//对应位与运算(参数运算的两元素以补码表示,运算结果也以补码表示;只有二者都为1时结果才为1否则为0)</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">for li_cnt = 1 to li_len + 4</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if midw(ls_bitvalue1,li_cnt,1) = '1' and midw(ls_bitvalue2,li_cnt,1) = '1' then</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_return = ls_return + '1'</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_return = ls_return + '0'</div>
<div style="MARGIN: 0cm 0cm 0pt 21pt" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if</div>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -