这好象不是很复杂呀 (1千字)
下面这段是把ID转换成48-bit的二进制串//----------------------------------------------------------
ID=任意数字(如:12345678)
BHD = ''
DO WHILE ID / 2 <> 0
BMOD = IIF(MOD(ID,2) = 0,'0','1')
BHD = BMOD + BHD
ID = INT(ID / 2)
ENDDO
If len('&bhd')<48
BHD=replicate('0',48-len('&bhd'))+BHD
ENDIF
//-----------------------------------------------------------
下面这段和上面的类似,是把ZCH(注册号)转换成48-bit的二进制串
//-----------------------------------------------------------
NBHD = ''
DO WHILE ZCH / 2 <> 0
BMOD = IIF(MOD(ZCH,2) = 0,'0','1')
NBHD = BMOD + NBHD
ZCH = INT(ZCH / 2)
ENDDO
If len('&nbhd')<48
NBHD=replicate('0',48-len('&nbhd'))+NBHD
ENDIF
//---------------------------------------------------------
下面这段是把ID的二进制串和ZCH的二进制串分成两段来逐位比较,每位比较的结果都记录在YHNUM中
//---------------------------------------------------------
YHNUM = ''
FOR BI = 1 TO 20
IF SUBSTR(BHD,BI,1) = SUBSTR(NBHD,BI,1)
YHNUM = YHNUM + '0'
ELSE
YHNUM = YHNUM + '1'
ENDIF
ENDFOR
FOR BI = 21 TO 48
IF SUBSTR(BHD,BI,1) = SUBSTR(NBHD,BI,1)
YHNUM = YHNUM + '1'
ELSE
YHNUM = YHNUM + '0'
ENDIF
ENDFOR
//------------------------------------------------------
将比较的结果YHNUM和常数串ZSHNUM进行比较
//------------------------------------------------------
ZSHNUM=001110101001100001110110010101000011001000010000
IF YHNUM == ZSHNUM
OK!
ELSE
Error!
