一般的なツール-----長期更新

ID 15 rpmで18

最初の世代IDが15であり、カードの裏面には18桁です

ID 15:出生コードアドレスコード+(2年)の日付+オーダーコード
18 ID:出生+コードアドレスコードの日(4年)+ +コードチェックコード・シーケンス

住所コード:ローカル管理部門コード6
誕生コードの日付:誕生日
注文コード:同じアドレスの市外局番、番号が付けられている同じ月の同じ日に同じ年、男性のための奇妙な、女性の偶数のための
チェックコード:アルゴリズムを計算することで得られます。

方法較正
1.次のように最初の17桁は、異なる係数を係数配列を乗算されます。7-9-10-5-8-4-2-1-6-3-7-9-10-5- 8-4-2
2. 17桁の数字と係数の乗算結果は、追加のプラスアウトと11で分割され、残りはどのくらい見ている
私は0-1-2-3-4-5で3を数えることができますこれらの図の間-6-7-8-9-10 11は、チェックコードを対応する1-0-X-9-8-7-6-5-4-3-2である
剰余が0である場合、すなわちIDカード認証コードが1であり、Xが2の残りの部分であります

次に、コードの

// 计算校验码
公共 チャーgetVerifyCode(文字列idCard){
     場合(idCard == NULL || idCard.length()<17 ){
         戻り 0 
    } 
    のchar []愛= idCard.toCharArray()。
    INT []のWi = {7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2 }。
    CHAR [] verifyCode = { '1'、 '0'、 'X'、 '9'、 '8'、 '7'、 '6'、 '5'、 '4'、 '3' }。
    int型 S = 0 ;
    int型のy;
    以下のためにint型私は= 0; I <wi.length。
    } 
    、Y = S%11 リターンverifyCode [Y]。
} 

// 转换为18位
公衆ストリングgetNewIdCard(文字列OLDCARD){ 
    StringBuilderのSB。
    もし(!OLDCARD = NULL && oldCard.length()== 15 ){ 
        SB = 新規のStringBuilder(); 
        sb.append(oldCard.substring( 0,6))のappend( "19")アペンド(oldCard.substring(6。 ))。
        sb.append(getVerifyCode(sb.toString()))。
        リターンsb.toString(); 
    } {
         リターン「」
    } 
}

 

 

傍受文字、省略記号に置き換えられます

/ ** 
*切片に文字列STR 
の長さを保持する* strLength 
* / 
パブリック文字列の部分文字列(STR文字列、整数strLengthを){
     IF(str.indexOf( " - | - "!)= -1 ){ 
        STR = STR .replace( " - | - "、 ";" ); 
    } 
    文字列S = "" ;
     IF(str.length < strLength.intValue()){ 
        S = STR; 
    } そうでなければ{ 
        S = str.substring(0、strLength )+ "..." ; 
    } 
    戻りS; 
}

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/yuan-zhou/p/11990847.html