国际标准书号(International Standard Book Number,ISBN;拟发音is-ben),是国际通用的图书或独立的出版物(除定期出版的期刊)代码。出版社可以通过国际标准书号清晰的辨认所有非期刊书籍。一个国际标准书号只有一个或一份相应的出版物与之对应。新版本如果在原来旧版的基础上没有内容上太大的变动,在出版时也不会得到新的国际标准书号码。当平装本改为精装本出版时,原来相应的国际标准书号号码也应当收回。

  平常我们能够见到的ISBN码有10位和13位两种,其中10位的ISBN自2007年1月起已经停止使用,目前新出版的图书ISBN码都是13位。考虑到一个严谨的图书管理程序要考虑到多方面的问题,因为10位ISBN码的图书还是有巨大的存世量的,所以要校验图书ISBN码的正确性,就必须同时考虑10位和13位的情况。从维基百科可以了解到ISBN码最后一位是校验码,其实要想校验ISBN码的正确,就是通过计算ISBN的校验码,看是否与最后一位吻合。这里所说的校验也只是校验ISBN在构成上是否合法,而不会校验是否为已发行图书的ISBN。下面是维基百科提供的ISBN码校验算法:

校验码的计算方法(10码)

  假设某国际标准书号号码前9位是:7-309-04547

计算加权和S:S = 7×10+3×9+0×8+9×7+0×6+4×5+5×4+4×3+7×2 = 226

计算S÷11的余数M:M = 226 mod 11 = 6

计算11 – M 的差N:N = 11 ? 6 = 5

如果N = 10,校验码是字母"X"

如果N = 11,校验码是数字"0"

如果N为其他数字,校验码是数字N

所以,本书的校验码是5;如果用户提供的ISBN码是7-309-04547-6,那么校验失败

校验码的计算方法(13码)

假设某国际标准书号号码前12位是:978-986-181-728

计算加权和S:S = (9×1)+(7×3)+(8×1)+(9×3)+(8×1)+(6×3)+(1×1)+(8×3)+(1×1)+(7×3)+(2×1)+(8×3) = 164

计算S÷10的余数M:M = 164 mod 10 = 4

计算10 – M 的差N:N = 10 ? 4 = 6

如果N = 10,校验码是数字"0"

如果N为其他数字,校验码是数字N

所以,本书的校验码是6。完整的国际标准书号号码为 ISBN 978-986-181-728-6

转载于:https://www.cnblogs.com/huidaoli/p/3551185.html

PHP校验ISBN码的函数相关推荐

  1. ISBN码识别-DA数据结构二级项目

    ISBN码识别 输入图像 灰度化处理 去噪处理 二值化处理 倾斜图像修正 截取 ISBN 号所在行 字符分割处理 字符识别处理 某些可以使用的函数 国际标准书号.这个号码印刷在每本图书封底(或护封)的 ...

  2. 什么是ISBN码及其如何制作

    国际标准书号(International Standard Book Number),简称ISBN,是国际上通用的出版物标识编码. 中国标准书号由标识符ISBN和十三位数字编码组成.十三位数字编码又分 ...

  3. python返回unicode_Python 中通过 unicode 码返回单字符的函数是 ,返回单字符 unicode 码的函数是 。_学小易找答案...

    [单选题]哪一个命令能用来查找在文件TESTFILE中只包含四个字符的行?( ) [单选题]修改以太网卡mac地址的命令为( ). [单选题]Python 字符串支持切片操作,如有字符串 s &quo ...

  4. 进制转换及如何求校验码(海明校验码及循环冗余校验CRC码)

    文章目录 前言 一.进制转换 1.1 二进制转换为八进制数和十六进制数 1.2 任意进制数转换为十进制数 1.3 十进制转换为任意进制 二.校验码求取 2.1海明校验码 2.2循环冗余校验CRC码 总 ...

  5. ffmpeg学习日记506-源码-av_image_copy()函数分析及功能

    ffmpeg学习日记506-源码-av_image_copy()函数分析及功能 实现文件 av_image_copy()实现在libavutil/imgutils.c中 函数原型 void av_im ...

  6. 厦大C语言上机 2020年期末上机考试 校验ISBN

    校验ISBN 描述 国际标准书号ISBN共17位,由13位数字和4位连字符("-")组成.最后1位数字表示校验位,校验规则为:对从左至右前12位数字,分别计算奇位数之和s1与偶位数 ...

  7. PHP的内码转换函数 mb_convert_encoding()

    PHP的内码转换函数 mb_convert_encoding() 转载:http://www.bitscn.com/pdb/php/200701/95622.html 因为某程序要用输出UTF-8编码 ...

  8. oracle数据库生成拼音码,Oracle中生成汉字拼音码的函数(转载)

    效果: select fgetpy('中国') FROM dual; 结果   zg CREATE OR REPLACE FUNCTION fgetpy (v_str VARCHAR2) RETURN ...

  9. 深度解析源码strcpy函数

    深度解析源码strcpy函数@TOC 前言 提示:这里可以添加本文要记录的大概内容: 本文将介绍c语言中string.h中strcpy函数的源码解析 提示:以下是本篇文章正文内容,下面案例可供参考 一 ...

最新文章

  1. 学历对程序员重要么?
  2. SPI分配传感器的寄存器
  3. Xcode6.1 模拟器路径
  4. 配置中心_Nacos做配置中心
  5. mysql optimizertrace_MySQL 调优 | OPTIMIZER_TRACE详解
  6. java jtextfield 输入_【java】JTextField与JComboBox结合动态匹配输入信息
  7. 提高网站性能的方法(学习笔记)
  8. 嵌入式操作系统新纪元?
  9. Ra-08系列开发板入门教程,标准LoRaWAN对接私有服务器。
  10. wdr7660虚拟服务器设置,TP-Link TL-WDR7660无线桥接怎么设置?
  11. python把英语句子成分字母_(完整版)英语句子成分分析(最完整版)
  12. 小米刷机一直在android界面,小米手机变砖怎么办?(小白刷机记)卡在开机怎么办?界面进不去,重启不管用​...
  13. appcan代码迁出失败
  14. 国人劝酒经典用语大全
  15. 电脑出现错误信息的故障排除
  16. 【参赛作品97】openGauss单机版安装步骤
  17. xeon bronze 3106
  18. svn服务端删除版本库_【SVN】彻底 svn 服务器上的 删除某一个文件或文件夹
  19. JS中find方法的使用
  20. 苹果手机中病毒显示无服务器,iPhone手机真的不会“中毒”?出现这3个状况就要小心了...

热门文章

  1. 安卓手机文件管理器简单横向评比 - imsoft.cnblogs
  2. 设计模式学习系列9 外观模式Facade
  3. 参数binlog_rows_query_log_events和binlog_row_image 与用 binlog恢复数据
  4. AssetManager (资源路径+当前手机配置信息)
  5. 窗口管理 (待完善...)
  6. FreeType(字体渲染引擎):支持多种字体格式(TTF,TTC等)
  7. 软件设计模式—面向接口编程
  8. 使用TCP来进行数据通信
  9. Navicat工具里的empty table和truncate table的区别
  10. 存储过程Procedure