gpt4 book ai didi

java - 如何生成 CUSIP 校验位

转载 作者:太空狗 更新时间:2023-10-30 00:07:33 31 4
gpt4 key购买 nike

CUSIP 是一个 9 位字母数字代码,用于唯一标识金融证券。

https://en.wikipedia.org/wiki/CUSIP

它们发明于1964年,考虑到60年代数据传输的可靠性,第9位实际上是校验位,用于确认前8个字符的有效性。有时,即使在今天,您可能会找到想要验证 CUSIP 的理由,或者公司或服务可能令人讨厌地决定只传输 8 个字符的 CUSIP,即使这违背了校验位的目的。

生成校验位的过程是:

  1. 根据非数字数字在字母表中的顺序位置加上 9(A=10,B=11,...Z=35)将非数字数字转换为值,并转换字符 *=36,@=37 , #=38.

  2. 将每个偶数位乘以 2

  3. 如果乘法的结果是两位数,则将两位数相加。 (12 = 1 + 2 = 3)

  4. 获取所有值的总和。

  5. 获取此操作的底值:(10 - (sum modulo 10)) modulo 10。

在 C# 中获取此值的最佳/最简单方法是什么?

最佳答案

public string GenerateCheckDigit(string cusip)
{
int sum = 0;
char[] digits = cusip.ToUpper().ToCharArray();
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ*@#";

for (int i = 0; i < digits.Length; i++)
{
int val;
if (!int.TryParse(digits[i].ToString(), out val))
val = alphabet.IndexOf(digits[i]) + 10;

if ((i % 2) != 0)
val *= 2;

val = (val % 10) + (val / 10);

sum += val;
}

int check = (10 - (sum % 10)) % 10;

return check.ToString();
}

编辑:

.NET Fiddle 对此进行了演示:https://dotnetfiddle.net/kspQWl

关于java - 如何生成 CUSIP 校验位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22231257/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com