<!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;
width:2px;
background:#000;
}
.bar_w{
display:block;
float:left;
height:50px;
width: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>