Как конвертировать IBAN в целое число?
Обратите внимание, что речь идет не об использовании библиотек или какого-либо конкретного языка программирования. Я просто хочу понять следующую концепцию из Википедии "Проверка IBAN":
Пример (фиктивный банк Соединенного Королевства, код сортировки 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 ответ
Ой! Форматирование в Википедии подсказало мне: это не одно, целое, большое число, но каждый символ должен быть преобразован сам по себе:
"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
32-е целое число в Base-36:
"W".to_i(36)
=> 32
И так далее.