(1) โครงสร้างหมายเลขประจำตัว 18 หมายเลข
หมายเลขประจำตัวประชาชนเป็นรหัสผสมที่มีลักษณะเฉพาะ ซึ่งประกอบด้วยรหัสร่างกายสิบเจ็ดหลักและรหัสตรวจสอบหนึ่งหลัก
ลำดับจากซ้ายไปขวาคือ รหัสที่อยู่หกหลัก รหัสวันเกิดแปดหลัก รหัสลำดับสามหลัก และรหัสตรวจสอบหนึ่งหลัก
1. รหัสที่อยู่
ระบุรหัสเขตการปกครองของเทศมณฑล (เมือง ธง เขต) ซึ่งเป็นที่ตั้งของที่อยู่อาศัยถาวรของวัตถุรหัส และจะต้องดำเนินการตามข้อกำหนดของ GB/T2260
2. รหัสวันเดือนปีเกิด
ระบุปี เดือน และวันเกิดของออบเจ็กต์การเข้ารหัส ซึ่งใช้ตามข้อกำหนดของ GB/T7408 ไม่มีตัวคั่นระหว่างรหัสปี เดือน และวัน
3. รหัสลำดับ
บ่งชี้ว่าภายในพื้นที่ที่ระบุด้วยรหัสที่อยู่เดียวกัน หมายเลขลำดับจะถูกกำหนดให้กับผู้ที่เกิดในปี เดือน และวันเดียวกัน หมายเลขคี่ของรหัสลำดับจะถูกกำหนดให้กับผู้ชาย และเลขคู่จะถูกกำหนดให้กับผู้หญิง .
4. ตรวจสอบขั้นตอนการคำนวณโค้ด
(1) สูตรผลรวมถ่วงน้ำหนักของรหัสภววิทยาสิบเจ็ดหลัก
S = Sum(Ai * Wi), i = 0, ... , 16 ก่อนอื่นให้รวมน้ำหนักของ 17 หลักแรก
Ai: หมายถึงค่าดิจิทัลของหมายเลข ID ที่ตำแหน่ง i-th (0~9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (ระบุปัจจัยการถ่วงน้ำหนักที่ตำแหน่งที่ i)
(2) แบบจำลองการคำนวณ
Y = ม็อด(S, 11)
(3) ตามโมดูล ค้นหารหัสตรวจสอบที่เกี่ยวข้อง
ใช่: 0 1 2 3 4 5 6 7 8 9 10
ตรวจสอบรหัส: 1 0 X 9 8 7 6 5 4 3 2
(2) ตัวอย่างโปรแกรมรับรหัสเช็คหลักสุดท้ายตามรหัสภววิทยา 17 หลัก
คัดลอกรหัสรหัสดังต่อไปนี้:
Id18 คลาสสาธารณะ {
int[] น้ำหนัก={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; // น้ำหนักรหัสภววิทยาสิบเจ็ดหลัก
ถ่าน [] ตรวจสอบ = { '1','0','X','9','8','7','6','5','4','3','2'} ; //mod11 สอดคล้องกับค่าอักขระรหัสตรวจสอบ
ถ่านสาธารณะ getValidateCode (String id17) {
ผลรวมเต็ม=0;
โหมด int=0;
สำหรับ(int i=0;i<id17.length();i++){
ผลรวม=ผลรวม+จำนวนเต็มparseInt(String.valueOf(id17.charAt(i)))*น้ำหนัก[i];
-
โหมด=ผลรวม%11;
กลับตรวจสอบ [โหมด];
-
โมฆะคงที่สาธารณะ main (String [] args) {
การทดสอบ Id18 = Id18 ใหม่ ();
System.out.println("รหัสยืนยันของบัตรประจำตัวนี้:"+test.getValidateCode("14230219700101101")); // รหัสยืนยันของบัตรประจำตัวนี้: 3
-
-
(3) คำอธิบาย
1. โปรแกรมสามารถรับรหัสยืนยันที่เกี่ยวข้องตามรหัสภววิทยา 17 หลักที่มีอยู่
2. โปรแกรมนี้สามารถกำจัดหมายเลข ID ที่มีรหัสยืนยันไม่ถูกต้อง
3. ปีเกิดของบัตรประจำตัวประชาชน 15 หลัก ใช้ตัวเลข 2 หลักสุดท้ายของปี โดยไม่มีรหัสเช็ค 1 หลักสุดท้าย
4. บัตรประจำตัวประชาชนที่สมบูรณ์มีตัวเลข 18 หลัก และหลักตรวจสอบสุดท้ายอาจเป็นตัวเลขที่ไม่ใช่หลักได้ ในหนึ่งในโปรเจ็กต์ของเรา ฐานข้อมูลจะบันทึกตัวเลข 17 หลักแรก ซึ่งสามารถเร่งความเร็วคำสั่ง SQL บางอย่างได้ (เช่น Inner Join)! - -