<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=gb2312" http-equiv="Content-Type" /> <title>Code93条形码生成</title> <style type="text/css"> *{ font-family:'menu' } .bar_b{ display:block; float:left; height:50px; 2px; background:#000; } .bar_w{ display:block; float:left; height:50px; 2px; background:#fff; } .box{ display:block; clear:both; margin:10px; } p{ clear:both; } </style> </head> <body> <div class="box"> <% Call Code93("nimei056759846") %> </div> <div class="box"> <% Call Code93("Extaspnet") %> </div> <% '打印条形码 Sub Code93(s) Dim strResult,strC,strK,intC,intK Dim strStart,strEnd,i,k '头尾 strStart = "101011110" strEnd = "1010111101" '体 strResult = "" '全部初始化为大写 s = UCase(s) '初始化变量 strC = "" strK = "" intC = 0 intK = 0 k = 1 '循环组合体,并计算CK值 For i = Len(s) To 1 Step -1 sT = Mid(s,i,1) iT = S_To_D(sT) intC = intC + k * iT intK = intK + ((k+1) * iT) strResult = S_To_B(sT) & strResult k = k + 1 Next '计算出C值 intC = intC Mod 47 strC = D_To_S(intC) '计算出K值 intK = intK + intC intK = intK Mod 47 strK = D_To_S(intK) strResult = strStart & strResult strResult = strResult & S_To_B(strC) & S_To_B(strK) & strEnd '打印 For i = 1 To Len(strResult) iT = Mid(strResult,i,1) if CLng(iT) = 1 Then Response.Write "<div class=""bar_b""></div>" Else Response.Write "<div class=""bar_w""></div>" End if Next Response.Write "<p>"& s &"</p>" End Sub '根据值取字符 Function D_To_S(str) Dim strTemp if CLng(str) >=0 and CLng(str)<=9 Then strTemp = Chr(CLng(str) + 48) Elseif CLng(str) >=10 and CLng(str)<=35 Then strTemp = Chr(CLng(str) + 55) Else Select Case str Case "36":strTemp = "-" Case "37":strTemp = "." Case "38":strTemp = " " Case Else strTemp = "0" End Select End if D_To_S = strTemp End Function '取得计算值 Function S_To_D(str) Dim strTemp,iStr iStr = Asc(str) if iStr>=48 and iStr=<57 Then strTemp = iStr - 48 Elseif iStr>=65 and iStr=<90 Then strTemp = iStr - 55 Else Select Case str Case "-":strTemp = 36 Case ".":strTemp = 37 Case " ":strTemp = 38 Case Else strTemp = 0 End Select End if S_To_D = strTemp End Function '将字符转为二进制码 Function S_To_B(str) Dim strTemp Select Case str case "0":strTemp = "100010100" case "1":strTemp = "101001000" case "2":strTemp = "101000100" case "3":strTemp = "101000010" case "4":strTemp = "100101000" case "5":strTemp = "100100100" case "6":strTemp = "100100010" case "7":strTemp = "101010000" case "8":strTemp = "100010010" case "9":strTemp = "100001010" case "A":strTemp = "110101000" case "B":strTemp = "110100100" case "C":strTemp = "110100010" case "D":strTemp = "110010100" case "E":strTemp = "110010010" case "F":strTemp = "110001010" case "G":strTemp = "101101000" case "H":strTemp = "101100100" case "I":strTemp = "101100010" case "J":strTemp = "100110100" case "K":strTemp = "100011010" case "L":strTemp = "101011000" case "M":strTemp = "101001100" case "N":strTemp = "101000110" case "O":strTemp = "100101100" case "P":strTemp = "100010110" case "Q":strTemp = "110110100" case "R":strTemp = "110110010" case "S":strTemp = "110101100" case "T":strTemp = "110100110" case "U":strTemp = "110010110" case "V":strTemp = "110011010" case "W":strTemp = "101101100" case "X":strTemp = "101100110" case "Y":strTemp = "100110110" case "Z":strTemp = "100111010" case "-":strTemp = "100101110" case ".":strTemp = "111010100" case " ":strTemp = "111010010" Case Else strTemp = "100010100" End Select S_To_B = strTemp End Function %> </body> </html>