身份證號知識大講堂:
1.現在的身份證號都是18位的,每一位都有自己所代表的含義,具體如下:
1)前1、2位數字表示:所在省份的**;
2)第3、4位數字表示:所在城市的**;
3)第5、6位數字表示:所在區縣的**;
4)第7~14位數字表示:出生年、月、日;
5)第15、16位數字表示:順序碼,表示在同一位址碼所標識的區域範圍內,對同年、月、日出生的人員編定的順序號;
6)第17位數字表示性別:奇數表示男性,偶數表示女性;
7)第18位數字是校檢碼:也有的說是個人資訊碼,一般是隨計算機的隨機產生,用來檢驗身份證的正確性。校檢碼可以是0~9的數字,有時也用x表示。
2.關於最後一位校驗碼的計算方法如下:
1)將身份證前17位數字,分別乘於7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2並相加,得到total;
2)將total模11,得到餘數m;
3)在陣列array(1,0,x,9,8,7,6,5,4,3,2)中,用餘數m作為下標取得對應的數字n;
3.身份證的安全問題也需要大家重視,不要隨意地洩露自己的關鍵資訊,尤其是自己的身份證號,被不法份子利用後,將會給自己帶來不必要的麻煩(千萬要注意這一點,技術可以不學,安全不容忽視)。
好啦,分析就這麼多,上**:
/**
*@function 判斷身份證號最後一位的校驗碼是否合法
*@return boolean [true|false]
* */
public
boolean
iscardid()
int weight_total = 0;//累加計算後的權重總和
char id_char_array = this.getcardidchararray(1, 17);//將身份證號轉換為字元陣列
if(this.id != null && !("".equals(this.id)) && this.id.length() == 18)
weight_total += integer.parseint(string.valueof(id_char_array[i])) * cardidutil.weight[i];
}int check_code_answer = weight_total % 11;//將累加計算後的權重總和和11進行取模運算
if(string.valueof(this.getcardidchararray(18, 18)).touppercase().equals(string.valueof(cardidutil.checkcode[check_code_answer])))
}return
false;
}/**
*@function 獲取省份證號指定位置的字元陣列
*@param start 指定位置的開始
*@param end 指定位置的結尾
*@return char
* */
public
char getcardidchararray(int start, int end)
if(start <= 0 || end > 18)
string id_char_array = "";
char temp = this.id.tochararray();
for(int i = start - 1; i <= end - 1; i++)
return id_char_array.tochararray();
}
本次學習尚未掌握的知識(繼續挖坑):
1)大檔案讀取的速度問題需要優化,好像可以將大檔案分成若干個小檔案,然後利用多執行緒讀取,來提高查詢速度,以後來試試。
身份證號的檢測
ddddddyyyymmddxxsp共18位 公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。2 位址碼 表示編碼物件常住戶口所在縣 市 旗 區 的行政區劃 按gb t2260的規定執行。3 出...
身份證號驗證
原文 身份證號驗證 public static boolean isidnumber string idnumber 定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpression 1 9 d 18 19 20 d 0 1 9 10 11 ...
身份證號驗證
身份證號組成 17位數字 1位校驗碼 位址碼 前六位 出生日期碼 第七位至第十位 順序碼 第十五位至十七位 對同年同月同日生的人便定的順序號,順序號奇數為男生,偶數為女生 檢驗碼 第十八位 0 9 x var acity function iscarid sid d x i.test sid ret...