`
mtnt2008
  • 浏览: 370773 次
  • 性别: 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转换工具(由10位转换13位 或13位转换位10位)

    《深入理解ISBN转换:从10位到13位的奥秘》 在图书出版行业中,ISBN(International Standard Book Number,国际标准书号)是一种全球通用的书籍唯一识别码,对于出版物的发行、销售和管理起着至关重要的作用。随着...

    isbn10位转13位.rar

    10位的ISBN主要用于1970年至2006年间的书籍,而13位的ISBN则从2007年开始逐渐取代10位,以适应更广泛的编码需求和EAN(欧洲商品条码)系统。 1. **ISBN-10到ISBN-13的转换**: - ISBN-10由10个数字组成,通常以一...

    ISBN转换工具(10位13位)

    转换10位到13位ISBN,主要涉及以下几个步骤: 1. **添加前缀**:在10位ISBN前加上978。 2. **校验位计算**:使用13位ISBN的校验位算法重新计算最后一个数字。 - 首先,将所有数字(包括前缀)乘以其位置权重(1, 3,...

    ISBN13位与10位转换

    ISBN系统自1970年起使用,随着时间的发展,它经历了从10位到13位的演变,以应对数量不断增长的出版物。在本教程中,我们将深入探讨ISBN10位和ISBN13位之间的转换方法。 首先,我们来理解10位和13位ISBN的基本结构。...

    c#图书条形码转换,isbn,9位,10位,13位互相转换,封装类,完整代码

    3. **ThirteenToOneTen**: 反向操作,从13位ISBN转换回10位。这需要先去掉前缀,然后根据12位数字计算出新的校验位。 4. **CheckIsbn**: 这是一个验证ISBN是否有效的函数,无论9位、10位还是13位,它都会检查校验位...

    isbn十位转13位.xlsx

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

    ISBN算法

    ISBN算法的核心在于校验位的计算。通常采用模10的加权校验方法,即每个数字乘以其权重,然后将所有乘积相加,最后取模10的结果。权重的分布是倒序的,第一个数字的权重为1,第二个数字的权重为3,依次类推,直到最后...

    Isbn和条码转换 10-13位和13-10位(完善版本)

    《ISBN与条形码转换:从10-13位到13-10位的探索》 在图书行业中,ISBN(国际标准书号)和条形码是两种常见的标识系统,它们用于唯一识别每本书。然而,在实际操作中,有时我们需要在10位和13位的ISBN之间进行转换,...

    易语言isbn10位转13位源码

    在标题提到的“易语言isbn10位转13位源码”中,我们要探讨的是关于国际标准书号(ISBN)的转换问题,特别是从10位到13位的转换。 国际标准书号(ISBN)是一个全球统一的图书标识系统,用于唯一标识每一种出版物。...

    易语言源码易语言isbn10位转13位源码.rar

    13位ISBN的产生,并非一种全新的编号方式,而是通过特定算法,将10位ISBN转换而来。这个算法的设计,是为了使编号系统具有更好的兼容性和适应性。 转换算法具体如下:首先,对于10位ISBN,每增加一位数字,都需要...

    使用Excel制作的ISBN-10和ISBN-13生成器

    3. **VBA宏**:如果生成器具有更复杂的交互功能,如自动转换ISBN-10到ISBN-13或者反过来,那么可能使用了Excel的VBA(Visual Basic for Applications)宏编程。VBA宏可以编写一系列指令,自动执行这些转换操作。 在...

    用C语言实现ISBN-10与ISBN-13的互换.pdf

    另一种可能的方法是编写两个函数,一个用于从ISBN-10转换到ISBN-13,另一个反之。转换时,主要涉及到数字位的重新排列和校验位的重新计算。 C语言因其简洁和高效的特点,常被用来处理这种数据转换任务。通过使用...

    ISBN转换.txt

    #### 三、10位ISBN转13位ISBN 1. **转换步骤**: (1) **移除所有短横线**:确保输入的ISBN字符串中不含任何非数字字符。 (2) **获取前9位数字**:从原10位ISBN中移除最后一位校验码,保留前9位数字。 (3) *...

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

    国际标准书号(International Standard Book Number,简称ISBN)是用于唯一标识书籍的13位数字代码,它在出版业中扮演着至关重要的角色。图书条形码则是将ISBN编码转化为机器可读的形式,使得书店、图书馆等机构可以...

    算法设计Jon_Kleinberg&Eva;_Tardos.pdf

    2. 计算机算法:书中提到了计算机算法,这可能涉及算法的分类、如何分析算法的效率(时间复杂度和空间复杂度)、基本算法类型(如排序和搜索算法)以及更高级的算法概念,比如动态规划、贪心算法、回溯算法、分治...

    《算法》 第四版 英文版

    综上所述,《算法》第四版英文版是一本专业性很强的算法教材,由权威学者编写,内容全面,覆盖了算法理论到实践应用的各个方面,不仅适合学术研究,也适合计算机领域的专业人士阅读参考。同时,该书的影印版版本的...

    易语言isbn10位转13位源码-易语言

    在“易语言isbn10位转13位源码”中,我们主要探讨的是如何利用易语言来实现国际标准书号(ISBN)的10位到13位转换的算法。 首先,我们需要了解ISBN的转换规则。在2007年以前,图书的标准标识是10位的ISBN,但在之后...

    incomplete_isbn_number_number_numbercompletion_

    10位ISBN使用模11的计算方法,而13位ISBN则基于模10的Luhn算法(也称为模10校验)。在补全不完整的ISBN时,我们需要根据已知的部分数字应用这些算法来确定缺失的校验位。 3. **数据完整性**:在自动补全过程中,...

    算法笔记(晴神宝典)

    不仅可以作为考研机试和PAT的学习教材,对其他的一些算法考试(例如CCF的CSP考试)或者考研初试的数据结构科目的学习和理解也很有帮助,甚至仅仅想学习经典算法的读者也能从本书中学到许多知识,本书还有配套的...

Global site tag (gtag.js) - Google Analytics