這次製作新的小工具-身分證製造機!
身分證製造機這工具個人很常用,因為要模擬客戶進行交易、帳務處理、顧客管理等等都會要用到,而且還要可以批次產生,因此才想到要做這個工具。讓我們開始建立這個工具吧!
要做身分證製造機之前,需要先了解身分證的規則,了解之後再實作成程式碼。(維基百科內容跟《國民身分證及戶口名簿格式內容製發相片影像檔建置管理辦法》的規則相同,就以好閱讀的維基百科為主)
根據維基百科說明:
目前的國民身分證統一編號(身分證字號)一共有十碼,起首為一個大寫英文字母與接續的九個阿拉伯數字。
首碼英文代碼是以配賦國民身分證統一編號的戶籍地(報戶口之地區)來區分的。
所以第一個字為英文,表示報戶口的地方。但這個地方不一定是出生地,是為報戶口的地方,而外國人就是辦理地的意思。
地區與英文對照表如下:
代碼 | 數值 | 縣市 | 備註 |
---|---|---|---|
A | 10 | 臺北市 | |
B | 11 | 臺中市 | |
C | 12 | 基隆市 | |
D | 13 | 臺南市 | |
E | 14 | 高雄市 | |
F | 15 | 新北市 | |
G | 16 | 宜蘭縣 | |
H | 17 | 桃園市 | |
I | 34 | 嘉義市 | |
J | 18 | 新竹縣 | |
K | 19 | 苗栗縣 | |
M | 21 | 南投縣 | |
N | 22 | 彰化縣 | |
O | 35 | 新竹市 | |
P | 23 | 雲林縣 | |
Q | 24 | 嘉義縣 | |
T | 27 | 屏東縣 | |
U | 28 | 花蓮縣 | |
V | 29 | 臺東縣 | |
W | 32 | 金門縣 | |
X | 30 | 澎湖縣 | |
Z | 33 | 連江縣 | |
L | 20 | 臺中縣 | 2010年12月25日停止使用 |
R | 25 | 臺南縣 | |
S | 26 | 高雄縣 | |
Y | 31 | 陽明山管理局 | 1974年1月1日停止使用 |
第二碼至第九碼為數字,其中第二碼表示性別,為了區分外來人口,所以總共有四組號碼:
代碼 | 含義 |
---|---|
1 | 男 |
2 | 女 |
8 | 外來人口-男 |
9 | 外來人口-女 |
原先的第三碼起為流水號,從2003年7月1日起更改為紀錄設籍前的身分碼,區別在臺灣定居之取得國籍之原外國人、原無戶籍國民、原港澳居民、及原大陸地區人民。
不過在法條的第三項:前項編號首碼以英文字母代表直轄市、縣(市)別,第二碼至第十碼為數字碼,第二碼為性別碼,第十碼為檢查碼。
,這部分還在查法條,看看哪邊有寫。
代碼 | 含義 |
---|---|
6 | 取得國籍之外國人 |
7 | 原無戶籍國民 |
8 | 原港澳居民 |
9 | 原大陸地區人民 |
0~5 | 其他 |
就流水編號,沒有啥意義,就是這樣XDD
也就是 check digit
,這邊就先不討論,因為這是最複雜的地方,就只是先把公式列下來,之後再逐一討論。這也是本工具最複雜的地方。
首先要把第一碼英文轉成兩位數數字,接著結合後面的九位數字,接著把每一個數字依序乘上 1
、9
、8
、7
、6
、5
、4
、3
、2
、1
、1
,然後再相加,最後再用模除(mod)10
。這個數值可以整除,就是檢查碼。
或是把前九個乘上 1
、9
、8
、7
、6
、5
、4
、3
、2
、1
,相加後模除 10
,取得於術後用 10
減去,剩下的值也就是檢查碼。
身分證有點複雜,為了製作這個小工具,會花不少時間,就用這個工具當作壓軸作品吧!