代碼轉換成DELPHI(100)

  • 主题发起人 主题发起人 zaorv
  • 开始时间 开始时间
Z

zaorv

Unregistered / Unconfirmed
GUEST, unregistred user!
Example: input= FAPGDC501H1TOSH[blue]00320011049800[/blue][red]5[/red]CN0011728001for i=16 to 28 currentDigit = cint(mid(input,i,1) ) if odd then sum = sum +currentDigit else if currentDigit * 2 > 9 then sum =sum + (currentDigit*2 -9) else sum = sum + (currentDigit * 2 ) end if end if odd = not oddnext 將上面代碼轉換成DELPHI 的代碼 for i := 16 to 28 do begin currentDigit := strToInt( copy(input,i,1) ) ; if odd(currentDigit) then begin sum := sum + currentDigit; end else begin if currentDigit*2>9 then begin sum := sum + (currentDigit*2 -9) end else begin sum := sum + ( currentDigit*2 ) end; end; end;以上轉換正確嗎?
 
你跟踪测试一下结果不就知道了吗?
 
上面是客戶提供的一段代碼與值,運算果與所提供出來的值不一致。
 
[red]5[/red]紅色的“5”就是客戶要求運算出來的值的。
 
是把 00320011049800 计算后得到 5 吗?但我看你的循环终值是 28,那么应该为 0032001104980 才对,你把 input 与结果放上来我看看。
 
To:szhcracker 是 0032001104980 ,我運算 的結果是:32現在客戶新發來郵件部分內容:Example: FAPGDC501H1TOSH00320010498006CN70011728001 ==> '001' 16進制 ->轉為10進制     即 0 * 16^2   + 0 * 16^1  + 1 * 16^0   =   0          + 0         + 1 * 1   =   1 ==>  以 '001' 10進制值 to get Checksum --> '6' Reference: http://en.wikipedia.org/wiki/Luhn_algorithm
 
结果是32,你还是问问清楚,可能是客户发来的Demo有误或者还有别的说明。
 
后退
顶部