C# 使用数字+字母计算ISO/IEC 7064 MOD37,36
时间: 2024-10-23 12:04:24 浏览: 25
根据《GBT 36904-2018电子证照标识规范.pdf》要求生成电子证照标识校验位,校验位符合7064 MOD37.36要求
5星 · 资源好评率100%
在C#中,ISO/IEC 7064(也称为EAN-13校验码)是一种用于标识商品的编码系统,它基于MOD37,36算法对前缀、厂商识别号、品项号以及校验位进行计算。这种编码通常用于条形码。以下是基本步骤:
1. **数据准备**:首先将前缀(前6位)、厂商识别号(接下来4位)、品项号(中间5位)加起来。
```csharp
int sum = prefix * 36 + manufacturerCode * 37 + itemNumber;
```
2. **计算校验位**:由于最后一位校验位的计算会涉及到除法,我们先假设一个临时总和,并且处理模运算。
- 对于整数部分,即`sum % 37`,得到的值就是下一位校验位。
- 如果总和有余数,还需要加上一个小数点后的数字。这是通过`Math.Floor()`来取整,然后乘以36(因为小数点后是下一个循环的开始)。
```csharp
double tempSum = (double)sum;
int checkDigit = Math.Floor(tempSum / 37);
tempSum -= checkDigit * 37;
// 将整数部分和小数部分合并
checkDigit += (int)(tempSum * 36);
```
3. **验证校验位**:最后生成的校验位(checkDigit)需要再次应用MOD37的检查,如果结果等于10,实际打印出来的校验位就是“X”,而不是数字10。
```csharp
if (checkDigit > 9)
{
checkDigit = 10; // 或者直接 'X'
}
```
阅读全文