`
mtnt2008
  • 浏览: 362843 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ISBN从10到13位的算法

阅读更多

 

     图书的ISBN有两种编码,一种长度是10位的,另一种是13位的。两者其实是可以用特定的算法相互推导的,关键在于最后一位校验码的计算。

 

1. 10位到13位 10位的isbn编号是7111165616,转化到13位,遵循下面的算法: 去掉最后一位,在最前面加上978,变成978711116561 从第一个数字起,求每奇数位的和,记为a。9+8+1+1+6+6 = 31 从第二个数字起,求每偶数位的和,记为b。7+7+1+1+5+1 = 22 求a+3b,记为c。c = 97 求10-c并对结果取10的模,10 - c %1 0 = 3。这就是校验位,加在第一步结果的最后。得到13位编码为:9787111165613

 

 

2.从13位到10位的计算方法更简单 13位编号是9787111165613现在想把它转化位10位,可以这样做: 去掉开头的”978″和最后一位校验码,变成711116561 从第一位开始,将每一位和10到2的数字相乘,并求和;7*10 + 1*9 + 1* 8 + 1*7 + 1*6 + 6*5 + 5*4 + 6*3 + 1*2 = 170;记为c 求11-c并对结果取11的模:(11-c)%11 = 6;如果结果是10就记为X,然后把算出来的一位加到第一步结果的最后,得到10位编码为:7111165616

 

java代码:

 

	private static String getISBN13(String isbn) {
		if (isbn.length() != 10) {
			return isbn;
		}
		isbn = isbn.substring(0, isbn.length() - 1);
		isbn = "978" + isbn;
		int a = 0;
		int b = 0;
		int c = 0;
		int d = 0;
		for (int i = 0; i < isbn.length(); i++) {
			int x = Integer.parseInt(isbn.substring(i, i+1));
			if (i % 2 == 0) {
				a += x;
			} else {
				b += x;
			}
		}
		c = a + 3 * b;
		d = 10 - c % 10;
		isbn = isbn + d;
		return isbn;
	}

 

附近为java代码

分享到:
评论

相关推荐

    isbn十位转13位.xlsx

    isbn十位转13位.xlsx,10位转13位用的mid函数和mod函数,算法很简单。 13位转10位,用的choose函数和match函数,或者用if函数。

    ISBN算法

    isbn 和图书编码的转换算法.

    Java数据结构与算法中的源代码和applet - 站长下载

    第十三章迭代器的实现 第十四章堆栈 第十五章队列与优先队列 第十六章二叉树 第十七章二叉树的应用 第十八章二叉搜索树 第十九章集与映射 第二十章有序集与映射的实现 第二十一章实现映射的散列法 第二十二章堆 第二...

    数据结构与算法C++版

    该书结合C++面向对象程序设计的特点,构建了数据结构与算法,对所有算法都在VisualC++...同时《数据结构与算法(C++版)》配有《数据结构与算法(C++版)实验和课程设计教程》(ISBN978-7-302-17503-2)供读者学习参考。

    算法导论(英文版)MIT出版

    全面、易懂、经典。 Introduction to Algorithms, Second Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein ISBN

    算法与数据结构 C语言版

    《高等院校计算机教材系列•算法与数据结构C语言版(第2版)》收集了自1992年以来...《高等院校计算机教材系列•算法与数据结构C语言版(第2版)》可以与《算法与数据结构(C语言版)》(ISBN7-111-14620-4)教材配套使用。

    [Introduction to Algorithms 3rd Edition][算法导论第3版]

    ISBN-10: 0262033844 | ISBN-13: 978-0262033848 | Publication Date: July 31, 2009 | Edition: third edition "Introduction to Algorithms, the 'bible' of the field, is a comprehensive textbook covering the...

    ISBN编号问题

    对于ISBN编号问题,其使用的求解编号的关键码问题。本文档给出了具体的算法和实验代码和结果展示

    Visual C++ 常用数值算法集

    Visual C++ 常用数值算法集 作者:何光渝编 出版社:科学出版社 出版日期:2002年7月 ISBN:703010498 序 前言 第1章 线性代数方程组的解法 1.1全主元高斯-约当(Gauss-Jordan)消去法 1.2LU分解法 1.3追赶法 ...

    国际标准书号与图书条形码释义及其转换算法(ISBN)

    国际标准书号与图书条形码释义及其转换算法(ISBN) 外带国际标准书号的ISO文件

    数据结构与算法分析_Java语言描述(第2版)

    第10章 算法设计技巧 10.1 贪婪算法 10.1.1 一个简单的调度问题 10.1.2 哈夫曼编码 10.1.3 近似装箱问题 10.2 分治算法 10.2.1 分治算法的运行时间 10.2.2 最近点问题 10.2.3 选择问题 10.2.4 一些算术问题的理论...

    数据结构与算法 in java

    数据结构与算法 in java By Peter Drake ...Print ISBN-10 : 0-13-146914-2 Print ISBN-13 : 978-0-13-146914-3 eText ISBN-10 : 0-13-174690-1 eText ISBN-13 : 978-0-13-174690-9 Pages : 592

    kobo-coding:ISBN10 和 TF*IDF 索引搜索算法

    以达芬奇码为例,产品ID为978140007917,ISBN为1400079179,产品ID的前3位数字(978)是可以去掉的前缀。 产品 ID (140007917) 的其余数字是 ISBN 的数字,不包括错误控制数字。 有关如何构造 ISBN 号的说明,请...

    图论算法理论、实现及应用 高清带书签pdf

    本书系统地介绍了图论算法理论,并选取经典的ACM/ICPC竞赛题目为例题阐述图论算法思想,侧重于图论算法的程序实现及应用。本书第1章介绍图论基本概念和图的两种存储表示方法:邻接矩阵和邻接表,第2~9章分别讨论图...

    C++数值算法(第二版)的例程

    本书由美国洛斯阿拉莫斯国家实验室(Los Alamos National Laboratory)主任WilliamH.Press和其他三位从事科学计算的学者合著。本书及其姊妹篇(C版、FORTRAN版以及Pascal版)已被美国哈佛大学、美国康奈尔大学、英国...

    《matlab 遗传算法工具箱及应用》 第七章源代码

    《matlab 遗传算法工具箱及应用》雷英杰等编著 西安电子科技大学出版社 ISBN:7560614841 第七章源代码

    Visual C++常用数值算法集(附光盘源代码).

    Visual C++ 常用数值算法集 作者:何光渝编 出版社:科学出版社 出版日期:2002年7月 ISBN:703010498 序 前言 第1章 线性代数方程组的解法 1.1全主元高斯-约当(Gauss-Jordan)消去法 1.2LU分解法 1.3追赶法 ...

    python检查字符串是否是正确ISBN的方法

    本文实例讲述了python检查字符串是否是正确ISBN的方法。...= 10 or not isbn[:9].isdigit(): return False if not (isbn[9].isdigit() or isbn[9].lower() == "x"): return False tot = sum((10 - i) * int(c) f

Global site tag (gtag.js) - Google Analytics