图书的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位的奥秘》 在图书出版行业中,ISBN(International Standard Book Number,国际标准书号)是一种全球通用的书籍唯一识别码,对于出版物的发行、销售和管理起着至关重要的作用。随着...
10位的ISBN主要用于1970年至2006年间的书籍,而13位的ISBN则从2007年开始逐渐取代10位,以适应更广泛的编码需求和EAN(欧洲商品条码)系统。 1. **ISBN-10到ISBN-13的转换**: - ISBN-10由10个数字组成,通常以一...
转换10位到13位ISBN,主要涉及以下几个步骤: 1. **添加前缀**:在10位ISBN前加上978。 2. **校验位计算**:使用13位ISBN的校验位算法重新计算最后一个数字。 - 首先,将所有数字(包括前缀)乘以其位置权重(1, 3,...
ISBN系统自1970年起使用,随着时间的发展,它经历了从10位到13位的演变,以应对数量不断增长的出版物。在本教程中,我们将深入探讨ISBN10位和ISBN13位之间的转换方法。 首先,我们来理解10位和13位ISBN的基本结构。...
3. **ThirteenToOneTen**: 反向操作,从13位ISBN转换回10位。这需要先去掉前缀,然后根据12位数字计算出新的校验位。 4. **CheckIsbn**: 这是一个验证ISBN是否有效的函数,无论9位、10位还是13位,它都会检查校验位...
isbn十位转13位.xlsx,10位转13位用的mid函数和mod函数,算法很简单。 13位转10位,用的choose函数和match函数,或者用if函数。
ISBN算法的核心在于校验位的计算。通常采用模10的加权校验方法,即每个数字乘以其权重,然后将所有乘积相加,最后取模10的结果。权重的分布是倒序的,第一个数字的权重为1,第二个数字的权重为3,依次类推,直到最后...
《ISBN与条形码转换:从10-13位到13-10位的探索》 在图书行业中,ISBN(国际标准书号)和条形码是两种常见的标识系统,它们用于唯一识别每本书。然而,在实际操作中,有时我们需要在10位和13位的ISBN之间进行转换,...
在标题提到的“易语言isbn10位转13位源码”中,我们要探讨的是关于国际标准书号(ISBN)的转换问题,特别是从10位到13位的转换。 国际标准书号(ISBN)是一个全球统一的图书标识系统,用于唯一标识每一种出版物。...
在这个“易语言源码易语言isbn10位转13位源码.rar”压缩包中,包含的源码是用易语言编写的一个程序,用于将10位的国际标准书号(ISBN-10)转换为13位的国际标准书号(ISBN-13)。 ISBN,全称International Standard...
3. **VBA宏**:如果生成器具有更复杂的交互功能,如自动转换ISBN-10到ISBN-13或者反过来,那么可能使用了Excel的VBA(Visual Basic for Applications)宏编程。VBA宏可以编写一系列指令,自动执行这些转换操作。 在...
另一种可能的方法是编写两个函数,一个用于从ISBN-10转换到ISBN-13,另一个反之。转换时,主要涉及到数字位的重新排列和校验位的重新计算。 C语言因其简洁和高效的特点,常被用来处理这种数据转换任务。通过使用...
#### 三、10位ISBN转13位ISBN 1. **转换步骤**: (1) **移除所有短横线**:确保输入的ISBN字符串中不含任何非数字字符。 (2) **获取前9位数字**:从原10位ISBN中移除最后一位校验码,保留前9位数字。 (3) *...
国际标准书号(International Standard Book Number,简称ISBN)是用于唯一标识书籍的13位数字代码,它在出版业中扮演着至关重要的角色。图书条形码则是将ISBN编码转化为机器可读的形式,使得书店、图书馆等机构可以...
2. 计算机算法:书中提到了计算机算法,这可能涉及算法的分类、如何分析算法的效率(时间复杂度和空间复杂度)、基本算法类型(如排序和搜索算法)以及更高级的算法概念,比如动态规划、贪心算法、回溯算法、分治...
综上所述,《算法》第四版英文版是一本专业性很强的算法教材,由权威学者编写,内容全面,覆盖了算法理论到实践应用的各个方面,不仅适合学术研究,也适合计算机领域的专业人士阅读参考。同时,该书的影印版版本的...
在“易语言isbn10位转13位源码”中,我们主要探讨的是如何利用易语言来实现国际标准书号(ISBN)的10位到13位转换的算法。 首先,我们需要了解ISBN的转换规则。在2007年以前,图书的标准标识是10位的ISBN,但在之后...
10位ISBN使用模11的计算方法,而13位ISBN则基于模10的Luhn算法(也称为模10校验)。在补全不完整的ISBN时,我们需要根据已知的部分数字应用这些算法来确定缺失的校验位。 3. **数据完整性**:在自动补全过程中,...
不仅可以作为考研机试和PAT的学习教材,对其他的一些算法考试(例如CCF的CSP考试)或者考研初试的数据结构科目的学习和理解也很有帮助,甚至仅仅想学习经典算法的读者也能从本书中学到许多知识,本书还有配套的...