1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      如何使用Python完成15位18位身份證的互轉(zhuǎn)功能-創(chuàng)新互聯(lián)

      這篇文章主要介紹如何使用Python完成15位18位身份證的互轉(zhuǎn)功能,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

      網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁制作,對廣告推廣等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)成都網(wǎng)站推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

      python可以做什么

      Python是一種編程語言,內(nèi)置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強(qiáng)大,在許多領(lǐng)域中都有廣泛的應(yīng)用,例如最熱門的大數(shù)據(jù)分析,人工智能,Web開發(fā)等。

      身份證號碼的構(gòu)成

      既然談到了身份證轉(zhuǎn)換,那就需要先了解下證件號碼的構(gòu)成。

      如何使用Python完成15位18位身份證的互轉(zhuǎn)功能 

      公民身份號碼是特征組合碼,由 十七位數(shù)字本體碼 和 一位數(shù)字校驗(yàn)碼 組成;

      排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼。

      六位數(shù)字地址碼:表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼,按GB/T 2260 的規(guī)定執(zhí)行。

      八位數(shù)字出生日期碼:表示編碼對象出生的年、月、日,按 GB/T 7408 的規(guī)定執(zhí)行。年、月、日代碼之間不用分隔符。某人出生日期為 1995年08月12日,其出生日期碼為 19950812。

      三位順序碼:表示在同一地址碼所標(biāo)識的區(qū)域范圍內(nèi),對同年、同月、同日出生的人編定的順序號,順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。

      一位校驗(yàn)碼:校驗(yàn)碼按照 ISO 7064:1983.MOD 11-2校驗(yàn)碼計算出來的檢驗(yàn)碼。

      校驗(yàn)碼計算方法

      1、將前面的身份證號碼17位數(shù)分別乘以不同的系數(shù)。從第一位到第十七位的系數(shù)分別為: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;

      2、將這17位數(shù)字和系數(shù)相乘的結(jié)果相加;

      3、用加出來和除以11,看余數(shù)是多少;

      4、余數(shù)只可能有0 1 2 3 4 5 6 7 8 9 10這11個數(shù)字。其分別對應(yīng)的最后一位身份證的號碼為 1 0 X 9 8 7 6 5 4 3 2 ;

      5、通過上面得知如果余數(shù)是2,就會在身份證的第18位數(shù)字上出現(xiàn)羅馬數(shù)字的X。

      解決思路

      15位轉(zhuǎn)18位:即身份證號碼的前六位數(shù)字+  '19' +  身份證第六位以后的數(shù)字 +  校驗(yàn)碼

      (不要問我為什么加19這種白癡(´⊙ω⊙`) @?¥&?的問題,當(dāng)然是因?yàn)橹挥?9世紀(jì)的人才可能擁有15位的身份證號啦)

      校驗(yàn)碼計算方法就更簡單了,將這17位數(shù)字和系數(shù)相乘的結(jié)果相加除以11匹配余數(shù)對應(yīng)的號碼即可。

      注意:代碼中我用了幾個變量,在這里拆解講解下。

      Ai: 表示第i位置上的身份證號碼數(shù)字值 Wi: 表示第i位置上的加權(quán)因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

      十七位數(shù)字本體碼加權(quán)求和公式: S = Sum(AiWi), i = 0, … , 16 ,先對前17位數(shù)字的權(quán)求和

      計算模 Y = mod(S, 11)

      通過模得到對應(yīng)的校驗(yàn)碼

          Y: 0 1 2 3 4 5 6 7 8 9 10

      校驗(yàn)碼: 1 0 X 9 8 7 6 5 4 3 2

      OK,分析的差不多了,直接看代碼。

      怎么用代碼實(shí)現(xiàn)?

      # encoding: utf-8
      """
      CREATED ON 19-11-05
      @AUTHOR: XUSL
      """
      WI = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1, ]
      VI = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, ]
      DEF GET_VERITY(EIGHTEEN_CARD):
        """
        :PARAM EIGHTEEN_CARD:
        :RETURN:
        """
        AI = []
        REMAINING = ''
        IF LEN(EIGHTEEN_CARD) == 18:
          EIGHTEEN_CARD = EIGHTEEN_CARD[0:-1]
        IF LEN(EIGHTEEN_CARD) == 17:
          S = 0
          FOR I IN EIGHTEEN_CARD:
            AI.APPEND(INT(I))
          FOR I IN RANGE(17):
            S = S + WI[I] * AI[I]
          REMAINING = S % 11
        RETURN 'X' IF REMAINING == 2 ELSE STR(VI[REMAINING])
      DEF UP_TO_EIGHTEEN(FIFTEEN_CARD):
        """
        15位轉(zhuǎn)18位
        :PARAM FIFTEEN_CARD:
        :RETURN:
        """
        EIGHTEEN_CARD = FIFTEEN_CARD[0:6] + '19' + FIFTEEN_CARD[6:15]
        RETURN EIGHTEEN_CARD + GET_VERITY(EIGHTEEN_CARD)
      DEF DOWN_TO_FIFTEEN(EIGHTEEN_CARD):
        """
        18位轉(zhuǎn)15位
        :PARAM EIGHTEEN_CARD:
        :RETURN:
        """
        RETURN EIGHTEEN_CARD[0:6] + EIGHTEEN_CARD[8:17]
      IF __NAME__ == '__MAIN__':
        # 15位轉(zhuǎn)18位
        CARD_1 = UP_TO_EIGHTEEN('632123820927051')
        PRINT(CARD_1)
        # 18位轉(zhuǎn)15位
        CARD_2 = DOWN_TO_FIFTEEN('410125199908222000')
        PRINT(CARD_2)

      當(dāng)然,這只是個小功能,主要還是想分享下代碼,如果有同樣的處理可以直接用。

      以上是“如何使用Python完成15位18位身份證的互轉(zhuǎn)功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


      新聞名稱:如何使用Python完成15位18位身份證的互轉(zhuǎn)功能-創(chuàng)新互聯(lián)
      分享URL:http://www.ef60e0e.cn/article/dgjjop.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        崇明县| 福鼎市| 西青区| 西吉县| 固镇县| 尖扎县| 抚远县| 息烽县| 洛川县| 贡觉县| 勃利县| 宜良县| 广宁县| 汶川县| 同心县| 洛浦县| 海晏县| 马鞍山市| 洛浦县| 江孜县| 陆良县| 浦江县| 沿河| 历史| 聂荣县| 且末县| 航空| 拉萨市| 绵阳市| 浦江县| 黑河市| 沅江市| 合山市| 澎湖县| 西青区| 朔州市| 宜兴市| 伊川县| 孟州市| 永新县| 瓮安县|