[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
从校验码计算应得余数 -> 减去前16位已得余数, 得余数偏差, 偏差为负则 加 11, 得非负余偏差后, 判断奇偶, 非负余偏差是奇数就加11, -> 最后除以 2(第17位的系数) 商就是第17位的数字
  1. @echo off & setlocal enableDelayedExpansion
  2. for %%i in (
  3. 1509231988042396#9
  4. 3700001989091894#0
  5. 4313021981042877#1
  6. 5301021920050801#X
  7. 6110251990062874#0
  8. ) do (
  9.     set "d=%%i"
  10.     set "c=!d:~-1!"
  11.     set /a "c=!c:x=10!,  t= c - 2>>31, r=t&(c^^1)|~t&(12-c), dr= r - ( (!d:~0,1!+!d:~10,1!)*7+(!d:~1,1!+!d:~11,1!)*9+(!d:~2,1!+!d:~12,1!)*10+(!d:~3,1!+!d:~13,1!)*5+(!d:~4,1!+!d:~14,1!)*8+(!d:~5,1!+!d:~15,1!)*4+!d:~6,1!*2+!d:~7,1!+!d:~8,1!*6+!d:~9,1!*3 ) %% 11, u=dr+(dr>>31&11), v=(u+(u&1)*11)/2"
  12.     echo;!d:~0,-2!!v!!d:~-1!
  13. )
  14. pause
复制代码
2

评分人数

TOP

返回列表