徐恒秋爱人:图书ISBN构成及其校验码的计算方法包括最新13位ISBN校验码的计算方法

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 02:34:41
前两年搞了书业,对这个也比较熟悉,最近出版社的isbn号好像都加了前缀978,而且校验码的计算方法也有所变化。    

ISBN的构成

ISBN号码由10位数字组成,并以三条线段加以分割,每组数字都有不同的含义。

第一组:区位代码0,1:英文 2:法文 3:德文 4:日文 5:俄文 7:中文

第二组:出版社代码

由各国的ISBN码分配中心,分给各个出版社。

第三组:书序码

该出版物代码,由出版社具体给出。

第四组:计算机校验码

只有一位,从0到10,10由X代替。

  • 校验码的计算方法

  1. 假设某ISBN号码前11位是:7-309-04547;     
  2. 计算加权和S:S=7×10+3×9+0×8+9×7+0×6+4×5+5×4+4×3+7×2 = 226;     
  3. 计算S÷11的余数M:M = 226 mod 11 = 6;     
  4. 计算11-M的差N:N = 11 − 6 = 5    
  • 如果N=10,校验码是字母“X”;     
  • 如果N=11,校验码是数字“0”;     
  • 如果N为其他数字,校验码是数字N。    

所以,本书的校验码是5

  • ISBN与EAN

EAN:European Article Number(欧洲商品号),ISBN中心于2004年决定在ISBN的基础上再添加一组三位数字在最前,即將現有的10位書號前面加上"978"及重新計算稽核號,以轉換為新的13位格式 。该计划将于2007年实施。

  • 注释

13位ISBN的最后一位校验位的加权算法与10位ISBN的算法不同。具体算法是:用1分别乘ISBN的前12位中的奇数位,用3乘以偶数位,成绩之和以10为模,用10减去此模,即可得到校验位的值,其值范围应该为0-9

  1. 假设某13位ISBN号码前15位(包含‘-’符号)是:987-7-309-04547;     
  2. 位置为123-4-567-89(10)(11)(12)     
  3. 计算加权和S:S=9×1+8×3+7×1+7×3+3×1+0×3+9×1+0×3+4×1+5×3+4×1+7×3 = 117;     
  4. 计算S÷10的余数M:M = 117 mod 10 = 7;     
  5. 计算10-M的差N:N = 10 − 7 = 3     (如果10-M的值为10则校验码取0)
  6. 所以,本书的13位ISBN的校验码是3。    

 

 

/*
* 假设某ISBN号码前11位是:7-07-045474;
计算加权和S:S=7×10+0×9+7×8+0×7+4×6+5×5+4×4+7×3+4×2 = 171;
计算S÷11的余数M:M = 171 mod 11 = 6;
计算11-M的差N:N = 11 − 6 = 5
如果N=10,校验码是字母“X”;
如果N=11,校验码是数字“0”;
如果N为其他数字,校验码是数字N。

*/
    private static  String getV(String s){
        char [] tmp = s.toCharArray();
        int j=10;
        int sum=0;
        for (int i = 0; i < 9; i++) {
            int dd = Integer.parseInt(tmp[i]+"");
            sum = sum+j*dd;
            j--;
            
        }
        sum = sum%11;
        sum = 11 -sum;
        if((sum+"").equals("10"))return "X";
        if((sum+"").equals("11"))return "0";
        
        return sum+"";