C# 使用ISO/IEC 7064 MOD37,36效验数字+字母
时间: 2024-10-23 07:04:30 浏览: 11
C# 中使用 ISO/IEC 7064 (也称为 EAN-13 或 ISBN-13) 的校验算法,包括 MOD37 或 MOD36 验证码,通常用于生成条形码编码。这个算法用于确认数据的完整性,尤其是在书籍、商品和其他需要全球唯一标识的对象上。
在 C# 中,你可以通过以下步骤来实现:
1. **计算校验码**:
- 对前12位数据进行乘法加权求和(奇数位置*3,偶数位置*1),然后对10取模(MOD10 for MOD10) 或对37取模(MOD37 for MOD37) 得到余数。
- 如果是 MOD10,则10减去余数即为校验码;如果是 MOD37,将100减去余数得到校验码。
2. **生成编码**:
- 将原始的12位数据和校验码放在一起形成13位字符串,通常是左对齐,最后一位作为校验码。
例如:
```csharp
public static string Checksum(string input)
{
int[] weights = new int[13] { 1, 3 };
int sum = 0;
for (int i = 0; i < input.Length; i++)
{
if (char.IsDigit(input[i]))
sum += Convert.ToInt32(input[i]) * weights[i % 2];
else if (input[i] == 'X') // 对于 X 代表空格,我们可以忽略
continue;
}
int checksum = 10 - sum % 10; // MOD10
// 或者 checksum = 100 - (sum + 1) % 37; // MOD37
return input + checksum.ToString();
}
```
阅读全文