2017-02-09 54 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 

等等。