用c#校验UPC条码是否正确
时间: 2023-09-07 16:15:34 浏览: 80
UPC条码一共有两种格式:UPC-A和UPC-E,它们的校验算法略有不同。下面分别介绍它们的校验方法。
UPC-A 校验:
UPC-A码由12位数字组成,其中最后一位是校验位。校验位的计算方法如下:
1. 将第1、3、5、7、9、11位数字相加。
2. 将第2、4、6、8、10位数字相加。
3. 将第1步的结果乘以3,然后加上第2步的结果。
4. 取结果的个位数(即结果模10的余数),然后用10减去该数,得到的数就是校验位。
下面是用 C# 实现 UPC-A 校验的代码:
```csharp
public bool VerifyUPCA(string code)
{
if (code.Length != 12 || !Regex.IsMatch(code, @"^\d{12}$"))
return false;
int evenSum = 0, oddSum = 0;
for (int i = 0; i < 12; i++)
{
int digit = int.Parse(code[i].ToString());
if (i % 2 == 0)
oddSum += digit;
else
evenSum += digit;
}
int totalSum = evenSum * 3 + oddSum;
int checkDigit = (10 - totalSum % 10) % 10;
return checkDigit == int.Parse(code[11].ToString());
}
```
UPC-E 校验:
UPC-E码由6、7、8位数字组成,其中最后一位是校验位。在进行校验之前,需要将UPC-E码转换为UPC-A码。转换的过程如下:
1. 如果UPC-E码的第1位是0、1、2,则将UPC-E码的第7、8位分别设为0、1、2,然后将前5位和第7、8位组成一个UPC-A码。
2. 如果UPC-E码的第1位是3,则将UPC-E码的第7、8位分别设为0、3,然后将前5位和第7、8位组成一个UPC-A码。
3. 如果UPC-E码的第1位是4,则将UPC-E码的第7、8位分别设为0、4,然后将前5位和第7、8位组成一个UPC-A码。
4. 如果UPC-E码的第1位是5、6、7、8、9,则将UPC-E码的第7位设为0,然后将前6位和第7、8位组成一个UPC-A码。
转换为UPC-A码之后,就可以使用UPC-A码的校验方法进行校验了。下面是用 C# 实现 UPC-E 校验的代码:
```csharp
public bool VerifyUPCE(string code)
{
if (code.Length != 6 && code.Length != 7 && code.Length != 8 || !Regex.IsMatch(code, @"^\d{6,8}$"))
return false;
string upca = "";
switch (code[0])
{
case '0':
case '1':
case '2':
upca = code.Substring(0, 3) + "00" + code.Substring(3, 2) + code[0];
break;
case '3':
upca = code.Substring(0, 3) + "00" + code.Substring(3, 2) + "3";
break;
case '4':
upca = code.Substring(0, 3) + "00" + code.Substring(3, 2) + "4";
break;
default:
upca = code.Substring(0, 4) + "0" + code.Substring(4, 2);
break;
}
return VerifyUPCA(upca);
}
```
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)