在网上想找相关的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
6
Public Function ENA13Encoder(pSCode As String) As 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 + 1, 1)
27
If Mid(tmpRuleStr, i, 1) = "A" Then
28
tmpStr = tmpStr & Mid(pSCode, i + 1, 1)
29
Else
30
tmpStr = tmpStr & Chr(Val(Mid(pSCode, i + 1, 1)) + 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 + 1, 1)) + 97)
38
Next
39
'函数返回时加右护线
40
ENA13Encoder = tmpStr & "!"
41
End Function

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

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(0, 1))];
20
tmpHandleStr = tmpHandle[Convert.ToInt32(pCode.Substring(0, 1))];
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 - 1, 1) == "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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40
