2017-02-09 93 views
0

請注意,這不是關於使用庫或任何特定的編程語言。我只是想了解以下概念,從Wikipedia驗證IBAN如何將IBAN轉換爲Integer?

例(虛構的英國銀行,排序代碼12-34-56,帳號98765432):

  • IBAN:

    GB82 WEST 1234 5698 7654 32 
    
  • 重新排列:

    W E S T12345698765432 G B82 
    
  • 轉換爲整數

    3214282912345698765432161182 
    
  • 計算剩餘:

    3214282912345698765432161182 mod 97 = 1 
    

了大膽的一步是造成我頭疼。我假定IBAN是字母數字的,即Base-36編碼(10個數字,26個字母)。

現在,當我將base-36轉換爲base-10(這是我理解這一步的過程)時,我的結果是離開了。這裏,例如,在Ruby中:

$ irb 
irb(main):001:0> "WEST12345698765432GB82".to_i(36) 
=> 15597194993925618867946544653683410 

現在,請,有人開導我,什麼是真正的轉換意味着整數

+1

是的。我需要模校驗/驗證。 – default

回答

0

哦!在維基百科的格式給了我一個提示:這不是一個單一的整體,大數目,但每個角色都有其自己的轉換:

"WEST12345698765432GB82".split("").each do |c| 
    print c.to_i(36) 
end 

結果:

3214282912345698765432161182 
=> ["W", "E", "S", "T", "1", "2", "3", "4", "5", "6", "9", "8", "7", "6", "5", "4", "3", "2", "G", "B", "8", "2"] 

注意,W是Base-36中的第32個整數:

"W".to_i(36) 
=> 32 

等等。