繁体   English   中英

将字符转换为整数以获取校验和

[英]Converting Chars to Ints for a Checksum

我正在努力创建一种方法,该方法将验证VIN号是否具有有效的校验和。 可以在以下位置找到有关该过程的描述: http : //en.wikipedia.org/wiki/Vehicle_identification_number#Transliterating_the_numbers

我遇到问题的地方是将原始数据(以字符串形式发送,当前正在处理char数组)转换为整数以进行乘法运算。 我不能只将这些值转换为它们的ASCII值并将其修改为9,因为数字S到Z与其余数字不对齐。

现在,我正在寻找一种有效的方法来执行此操作。 我首先想到的是一个转换语句,但是那似乎太长了。 我想到的下一件事是字典,这似乎是一种非常有效的处理方式。 正则表达式似乎对于该问题而言过于复杂,并且遇到了几乎与switch语句一样冗长的问题。

那么,可变词典VinDict可以做到吗? 我的直觉部分是说,使用lambda语法有一种非常优雅的方法,但是我对此并不十分了解。

在此先感谢您的帮助!

switch语句和字典将提供大致相同的性能。 假设您有类似以下内容:

static Dictionary<char,int> CharToIntMap = new Dictionary<char,int>
{
    {'0', 0}, {'1', 1}, ... {'S', 11}, {'Z'}, 12}
};

int val = CharToIntMap[c];

要么:

switch (c)
{
    case '0' : val = 0; break;
    case '1' : val = 1; break;
    ...
    case 'S' : val = 11; break;
}

如果switch语句有7种以上的情况,则编译器将创建一个字典。 有关更多详细信息,请参见https://stackoverflow.com/a/8530197/56778

现在,看起来更好是一个偏好问题。 我建议编写自己的字典来进行映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM