1. 개요

  • python에서는 isbn library가 있는데 google sheet에서 사용하고 싶은데 없다.
  • 자작하기로 하고 표준을 알아봤다
  • 찾아보니 예제 코드가 많다

2. 표준 문서 - 번역

ISBN Information

ISBN 10 To ISBN 13

Bill Pearce. 2015년 3월 12일 마지막 업데이트

ISBN-10 vs ISBN-13

  • ISBN-10은 구형 표준으로 신규 발행되는 책에는 더이상 발행되지 않습니다
  • ISBN-10은 10자리 숫자를 사용하며 2007년 1월 1일에 ISBN-13으로 대체되었습니다
  • 그 이후 발행된 모든 새 ISBN 번호는 13자리로 구성됩니다
  • ISBN-10에 대한 자세한 내용은 ISBN-10 페이지를 참조하세요
  • 마찬가지로, ISBN-13에 대한 자세한 내용은 ISBN-13 페이지를 참조하세요

10 Digits, 13 Digits? What About Spaces And Hyphens?

  • 여기서 논의하고자 하는 주제에 집중하기 위해 다음 문자들은 무시합니다
    • ISBN 번호 주변의 공백문자
    • 하이픈
    • ISBN이라고 써진 레이블
  • 단 하나의 예외만 허용
    • 일부 10 자리 ISBN은 숫자가 아닌 문자 x ( 혹은 X )를 마지막 문자로 허용합니다
    • 허용하는 이유에 대해서는 ISBN-10 페이지를 참조하세요( 위에 링크에 있음)

The Conversion Of ISBN-10 to ISBN-13

  • 아래 7 단계 과정에서 하려고 하는 것들
    • 10 자리 ISBN을 가져오기 (10 자리)
    • 마지막 문자를 뺌 (9 자리)
    • 앞에 “978” 붙이기 (12 자리)
    • 체크 숫자를 새로 계산해서 마지막에 붙이기 (13 자리)
  • 시작합니다
    • 다음의 ISBN-10 예제로 시작합니다
      1
      
      1861972717
      
    1. 10자리 ISBN-10 을 가져와서 마지막 1자리만 뺍니다
      • 마지막 문자는 10자리에서만 의미있는 Check 숫자라서 그냥 버려도 됩니다
      • 우리는 13자리에서 필요한 새로운 숫자를 이어지는 3 ~ 6 단계에서 계산할겁니다.
      • Check 숫자에 관한 내용은 ISBN Check Digit 에서 확인하세요
        1
        
         186197271
        
    2. “978”을 남은 9자리 숫자에 붙입니다 ( 978을 붙이는 이유는 ISBN-13 페이지를 참고하세요)
      1
      
      978186197271
      
    3. 이 단계부터 다음 3번의 단계동안 Check 숫자를 계산해야 합니다
      • 계산된 Check 숫자는 2단계에서 넘어온 12자리 숫자뒤에 덧붙입니다
      • 12자리 숫자 각각에 숫자 하나를 곱합니다
      • 첫번째 숫자는 1을 곱하고, 두번째 숫자는 3을 곱합니다
      • 세번째 숫자는 다시 1을 곱하고, 네번째 숫자는 다시 3을 곱하고..이런 식으로 계속합니다
      • 1과 3을 번갈아 곱하면서 12번째 숫자까지 진행합니다.
      • 즉 다음과 같습니다
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        
         9 x 1 = 9
         7 x 3 = 21
         8 x 1 = 8
         1 x 3 = 3
         8 x 1 = 8
         6 x 3 = 18
         1 x 1 = 1
         9 x 3 = 27
         7 x 1 = 7
         2 x 3 = 6
         7 x 1 = 7
         1 x 3 = 3
        
    4. 이제 단계 3 에서 얻은 12개의 합 결과를 모두 더합니다
      1
      
      9 + 21 + 8 + 3 + 8 + 18 + 1 + 27 + 7 + 6 + 7 + 3 = 118
      
    5. 단계 4의 결과를 가져와서 10으로 모듈러 나눗셈을 합니다
      • 10으로 모듈러 나누기를 한다는 것은 10단위 이상을 버리는 것과 같습니다
      • 10으로 나누었을때 나머지의 의미입니다
      • 나누기를 했을때 소수점 이하의 값을 내는 decimal division 방식이 아님을 주의하세요
      • 118 mod 10 = 8 118 을 10으로 나누면 몫은 11 나머지는 8입니다. 우리는 나머지 8에만 관심이 있습니다
        1
        
        8
        
    6. ISBN-13의 Check 숫자를 계산하는 마지막 단계입니다
      • 단계 5에서 결과를 가져옵니다
      • 결과가 zero이면 Check 숫자는 0 입니다
      • 결과가 zero가 아니면 10 에서 단계 5의 결괏값을 뺍니다
      • 그 결과가 Check 숫자입니다
        1
        
        10 - 8 = 2
        
    7. ISBN-10 에서 ISBN-13으로 바꾸는 마지막 단계입니다
      • 단계 6의 결괏값을 단계 2에서 얻은 12자리값 뒤에 덧붙입니다
      • 결과가 나왔습니다
        1
        
        9781861972712
        
  • 우리가 한 일 요약
    • 10자리 ISBN 숫자에서 마지막 문자를 하나 뺀다 (step 1)
    • 맨 앞에 “978”을 붙인다 (step 2)
    • Check 숫자를 계산해서 (step 3 to 6) 맨 뒤에 붙인다 (step 7)