zoukankan      html  css  js  c++  java
  • ENA13条码转换函数

    最近一个VB项目里需要做ENA-13的条码处理,一开始用了很多字体打,可就是不能被扫描,在网上查了相关资料后才知道ENA-13的编码规则,呼呼,
    在网上想找相关的VB代码可找没找着,只能用这个规则自己写一个C#及VB函数了,以备日后再用,也为各位需要的同志服务

    VB Code
     1'ENA-13条码转换函数
     2'调用此函数打印时推荐使用EanBwrP36Tt,EanBwrP36xTt等同类字体
     3'ENA-13条码格式可参考:http://www.enpot.com.cn/zhishi/barcode302.htm
     4'Copyright(c) 2001-2006 by S.B.Z. Studio
     5'Pvistely 2006-07-17
     6Public Function ENA13Encoder(pSCode As StringAs String
     7  Dim tmpRuleStr As String, tmpHandleStr As String
     8  Dim tmpRule, tmpHandle
     9  If Len(pSCode) <> 13 Then Exit Function
    10 '左资料码格式
    11  tmpRuleStr = "AAAAAA,AAAAAA,AABABB,AABBAB,AABBBA,ABBAAB,ABBBAA,ABABAB,ABABBA,ABBABA"
    12  '导入值符号
    13  tmpHandleStr = "# $ % & ' ( ) * + ,"
    14  tmpRule = Split(tmpRuleStr, ",")
    15  tmpHandle = Split(tmpHandleStr, " ")
    16  Dim tmpStr As String
    17  Dim tmpStr2 As Integer
    18  Dim i, j
    19  If Not IsNumeric(pSCode) Then ENA13Encoder = ""Exit Function
    20  tmpRuleStr = tmpRule(Val(Left(pSCode, 1)))
    21  tmpHandleStr = tmpHandle(Val(Left(pSCode, 1)))
    22  '第一位(导入值)加左护线
    23  tmpStr = tmpHandleStr & "!"
    24  '第二至七位(左资料码)
    25  For i = 1 To 6
    26    tmpStr2 = Mid(pSCode, i + 11)
    27    If Mid(tmpRuleStr, i, 1= "A" Then
    28      tmpStr = tmpStr & Mid(pSCode, i + 11)
    29    Else
    30      tmpStr = tmpStr & Chr(Val(Mid(pSCode, i + 11)) + 65)
    31    End If
    32  Next
    33  '中分符
    34  tmpStr = tmpStr & "-"
    35  '第八至十三位(右资料码,包括校验位)
    36  For i = 7 To 12
    37    tmpStr = tmpStr & Chr(Val(Mid(pSCode, i + 11)) + 97)
    38  Next
    39 '函数返回时加右护线
    40  ENA13Encoder = tmpStr & "!"
    41End Function

    C# Code
     1    /// <summary>
     2    /// Ena-13编码转换函数
     3    /// 调用此函数打印时推荐使用EanBwrP36Tt,EanBwrP36xTt等同类字体
     4    /// ENA-13条码格式可参考:http://www.enpot.com.cn/zhishi/barcode302.htm
     5    /// Copyright(c) 2001-2006 by S.B.Z. Studio
     6    /// Pvistely 2006-07-17
     7    /// </summary>
     8    /// <param name="pCode">带效验位13位数字串</param>
     9    /// <returns> ENA-13编码</returns>

    10    public static string ENA13Encoder(string pCode)
    11    {
    12      string tmpRuleStr = "AAAAAA,AAAAAA,AABABB,AABBAB,AABBBA,ABBAAB,ABBBAA,ABABAB,ABABBA,ABBABA";
    13      string tmpHandleStr = "# $ % & ' ( ) * + ,";
    14      string[] tmpRule = tmpRuleStr.Split(new char[] ',' });
    15      string[] tmpHandle = tmpHandleStr.Split(new char[] ' ' });
    16      if (!Microsoft.VisualBasic.Information.IsNumeric(pCode)) return "";
    17      string tmpStr = "";
    18      string tmpStr2 = "";
    19      tmpRuleStr = tmpRule[Convert.ToInt32(pCode.Substring(01))];
    20      tmpHandleStr = tmpHandle[Convert.ToInt32(pCode.Substring(01))];
    21      //第一位
    22      tmpStr = tmpHandleStr + "!";
    23      //第二至七位
    24      for (int i = 1; i <= 6; i++)
    25      {
    26        tmpStr2 = pCode.Substring(i, 1);
    27        if (tmpRuleStr.Substring(i - 11== "A")
    28          tmpStr += pCode.Substring(i, 1);
    29        else 
    30          tmpStr += (char)(Convert.ToInt32(pCode.Substring(i, 1)) + 65);
    31      }

    32      //中分符
    33      tmpStr += "-";
    34      //第八至十三位
    35      for (int i = 7; i <= 12; i++)
    36        tmpStr += (char)(Convert.ToInt32(pCode.Substring(i, 1)) + 97);
    37      //加右护线
    38      return tmpStr + "!";
    39    }

    40
  • 相关阅读:
    c#文件读取
    asp.net页面缓存学习
    JQuery学习
    如何在asp.net后台调用前台代码
    c#文件操作二
    oracler主键自动增长
    C#委托学习
    小技巧:DIV中显示字符不完整的解决方法
    英文名字的误区及起名方法
    SharePoint 2010 中提供的母版页
  • 原文地址:https://www.cnblogs.com/pvistely/p/452952.html
Copyright © 2011-2022 走看看