条形码:Code93

<!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>

  

原文地址:https://www.cnblogs.com/blackice/p/2882532.html