MAC1=6465911134
MAC2=5911135911
string:='23121023617800000000051204512110389840000000110120'
//MAC1=5236179902
//MAC2=4893524771
//string:='15834926375283586900'
runmac1:=mac1
runmac2:=mac2
macpos:=1
//Áß°£¿¡¼ °èÁÂ¿Í ±Ý¾×À¸·Î °è¼Ó ·çƾ µ¹¸°´Ù.25 byte????
maccheck(@string,@runmac1,@runmac2)
//¿©±îÁö
//Ȥ½Ã³ª µ¥ÀÌŸ°¡ ³²¾ÒÀ¸¸é ¸¶¹«¸®
if len(string)>0
string:=left(string+"0000000000",10)
maccheck(@string,@runmac1,@runmac2)
endif
? fillzero(under10(runmac1+runmac2),10)
procedure maccheck(supstr,runmac1,runmac2)
do while len(supstr)>=10
st:=left(supstr,10)
stv:=val(st)
//? supstr,"====",macpos
//? "value ",stv,stv
//? "mac1,mac2",under10(runmac1),under10(runmac2)
stv1:=under10(runmac1+stv)
stv2:=under10(runmac2+stv)
//? "stv1,stv2",stv1,stv2
stv3:=shiftstring(stv1,mac2,macpos)
stv4:=shiftstring(stv2,mac1,macpos)
//? "stv3,stv4",stv3,stv4
stv5:=under10(stv1+stv3)
stv6:=under10(stv2+stv4)
//? "stv5,stv6",stv5,stv6
runmac1:=stv5
runmac2:=stv6
supstr:=substr(supstr,11)
macpos++
if macpos>11 ;macpos:=1;endif
enddo
return
procedure under10(v)
return val(right(fillzero(v,10),10))
procedure shiftstring(v1,v2,pos)
local sc:=10-val(substr(fillzero(v2,10),pos,1))
v1s:=fillzero(v1,10)
v1s:=v1s+left(v1s,sc)
v1s:=right(v1s,10)
return val(v1s)
FUNCTION FILLZERO(nsour,ncoun)
local csour
csour:=alltrim(str(nsour))
if len(csour)>=ncoun;return csour;endif
nsour:=if(len(csour)>=ncoun,substr(csour,1,ncoun),replicate('0',ncoun-len(cso
ur))+csour)
return nsour
|
|