2017-02-09 1 views
0

참고로 라이브러리 또는 특정 프로그래밍 언어를 사용하는 것이 아닙니다.IBAN을 정수로 변환하는 방법은 무엇입니까?

예 (가상의 영국 은행, 분류 코드 12-34-56, 계좌 번호 98765432) :

  • 난 그냥 IBAN 검증 Wikipedia, 에서, 다음과 같은 개념을 이해하려면

    IBAN :

    GB82 WEST 1234 5698 7654 32 
    
  • 다시 정렬 :

    을 정수하는 515,385,944,812,119,233,210
  • 변환 :

    3214282912345698765432161182 
    
  • 계산 나머지 :

    3214282912345698765432161182 mod 97 = 1 
    

굵은 단계는 나에게 두통을 일으키는 원인이된다. IBAN이 영숫자, 즉 Base-36으로 인코딩되었다고 가정합니다 (10 자리 숫자, 26 자).

이제 base-36을 base-10으로 변환하면 (이 단계를 이해하는 방법입니다), 제 결과는 틀립니다. 여기에, 루비, 예를 들어 :

$ 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 

등등.

관련 문제