BarcodeLib/Symbologies/UPCSupplement5.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Text;
namespace BarcodeLib
{
class UPCSupplement5 : BarcodeCommon, IBarcode
{
private string[] EAN_CodeA = { "0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011" };
private string[] EAN_CodeB = { "0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111" };
private string[] UPC_SUPP_5 = { "bbaaa", "babaa", "baaba", "baaab", "abbaa", "aabba", "aaabb", "ababa", "abaab", "aabab" };
public UPCSupplement5(string input)
{
Raw_Data = input;
}
/// <summary>
/// Encode the raw data using the UPC Supplemental 5-digit algorithm.
/// </summary>
private string Encode_UPCSupplemental_5()
{
if (Raw_Data.Length != 5) throw new Exception("EUPC-SUP5-1: Invalid data length. (Length = 5 required).");
if (!BarcodeLib.Barcode.CheckNumericOnly(Raw_Data))
throw new Exception("EUPCA-2: Numeric Data Only");
//calculate the checksum digit
int even = 0;
int odd = 0;
//odd
for (int i = 0; i <= 4; i += 2)
{
odd += Int32.Parse(Raw_Data.Substring(i, 1)) * 3;
}//for
//even
for (int i = 1; i < 4; i += 2)
{
even += Int32.Parse(Raw_Data.Substring(i, 1)) * 9;
}//for
int total = even + odd;
int cs = total % 10;
string pattern = UPC_SUPP_5[cs];
string result = "";
int pos = 0;
foreach (char c in pattern)
{
//Inter-character separator
if (pos == 0) result += "1011";
else result += "01";
if (c == 'a')
{
//encode using odd parity
后面还有 22 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。