ISBN 13位与10位互转函数

来源:互联网 发布:新浪博客加js代码 编辑:程序博客网 时间:2024/05/01 17:40

在处理哪里买图书比价网www.nalimai.com )数据时,遇到了老图书ISBN与新ISBN间的对应问题。查阅了一些资料,了解了转换规则。新写了转换函数,经应用,确认可行。记录备忘之。

function get10isbn(isbnid) ''由13位ISBN获知10位ISBN
if len(isbnid)=13 then ''若原ISBN为13位,则谋求转换
i10=mid(isbnid,4,1)
i9=mid(isbnid,5,1)
i8=mid(isbnid,6,1)
i7=mid(isbnid,7,1)
i6=mid(isbnid,8,1)
i5=mid(isbnid,9,1)
i4=mid(isbnid,10,1)
i3=mid(isbnid,11,1)
i2=mid(isbnid,12,1)
thissum=i10*10+i9*9+i8*8+i7*7+i6*6+i5*5+i4*4+i3*3+i2*2
if thissum mod 11=0 then
i1="0"
else
i1=11-thissum mod 11
if i1=10 then
i1="x"
end if
end if
get10isbn=i10&i9&i8&i7&i6&i5&i4&i3&i2&i1
else
get10isbn=isbnid
end if
end function

function get13isbn(isbnid) ''由10位ISBN获知13位ISBN
if len(isbnid)=10 then ''若原ISBN为10位,则谋求转换
i13=9
i12=7
i11=8
i10=mid(isbnid,1,1)
i9=mid(isbnid,2,1)
i8=mid(isbnid,3,1)
i7=mid(isbnid,4,1)
i6=mid(isbnid,5,1)
i5=mid(isbnid,6,1)
i4=mid(isbnid,7,1)
i3=mid(isbnid,8,1)
i2=mid(isbnid,9,1)
thissum=i13+i11+i9+i7+i5+i3+(i12+i10+i8+i6+i4+i2)*3
i1=10- thissum mod 10

if i1=10 then i1=0
get13isbn=i13&i12&i11&i10&i9&i8&i7&i6&i5&i4&i3&i2&i1
else
get13isbn=isbnid
end if
end function

www.nalimai.com 哪里买图书比价网