myfinderの技術や周辺的活動のblog

2008年12月13日土曜日

チェックデジット的な何か

超走り書き

/*
1の位を9倍、10の位を8倍、100の位を7倍、1000の位を6倍....
した後、それを11で割った余りの0〜10をそれぞれ「ABCHKMRUXYZ」で表したもの
*/
// 元の値
String num = "1234";
StringBuffer number = new StringBuffer(num);
// チェックデジット
String[] checkDigits = {"A","B","C","H","K","M","R","U","X","Y","Z",};
// かける数
int multNumber = 9;
// 掛けた数を保持する配列
int sumNumbers = 0;
// 各数にかけ算
for (int i = 0; i < number.length(); ++i) {
sumNumbers += number.charAt(i) * multNumber;
}
// その結果を11で割った余りを求める
System.out.println("CheckDigit is : " + checkDigits[sumNumbers % 11]);

0 件のコメント: