如何将 IBAN 转换为整数



注意,这不是关于使用库或任何特定的编程语言。我只想了解以下概念,来自维基百科,验证IBAN:

示例(虚构的英国银行,分类代码 12-34-56,帐号 98765432(:

  • 伊班:

       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

现在,请有人启发我,转换为整数的真正含义是什么?

哦!维基百科上的格式给了我一个提示:它不是一个单一的、完整的、大的数字,而是每个字符都必须自己转换:

"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

等等。

相关内容

  • 没有找到相关文章

最新更新