本人因最近批量弄卡號,要根據luhn演算法,得出銀行卡號的最后一位校驗碼,如有一批卡號:
6532 4393 8379 2311
6532 4393 8379 2322
6532 4393 8379 2333
6532 4393 8379 2344
因卡號的最后一位是校驗位,通過手動輸入起始卡號,得出這起始卡號的最后一位,如輸入起始卡號為:6532 4393 8379 2311這個卡號的最后一個1不用輸入,結束位為:6532 4393 83792344這個卡號的最后一個4不用輸入,只輸入前面的15位,最終算出這個起始的最后一位校驗碼。
我只需要輸入前15的起和止,即可自動算出這批卡號的最后一位校驗碼,該如何弄呢?高手們指點一下
uj5u.com熱心網友回復:
http://blog.sina.com.cn/s/blog_62e1faba010147k4.html這是模10演算法的介紹,我想用delphi代碼實作一批卡號的最后一位校驗碼uj5u.com熱心網友回復:
演算法幫你寫好了,其他自己寫吧。function CalcLunh(const data: string): Char;
var
i: Integer;
sum: Integer;
b: Byte;
begin
sum := 0;
for i := 1 to Length(data) do
begin
b := Ord(data[i]) - Ord('0');
if i mod 2 = 0 then
begin
b := b * 2;
end;
if b > 9 then
begin
b := b mod 10 + b div 10;
end;
sum := sum + b;
end;
sum := (10 - sum mod 10) mod 10;
Result := Chr(sum + Ord('0'));
end;
呼叫
CalcLunh('653243938379231')卡號中如果有空格神馬的,自己處理掉就OK。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88747.html
標籤:語言基礎/算法/系統設計
