欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

易語言純IP數(shù)據(jù)庫查詢代碼實例

 更新時間:2018年11月15日 11:35:03   投稿:laozhang  
在本篇內容中我們給大家分享了關于易語言編寫的純IP數(shù)據(jù)庫查詢相關代碼實例,有需要的朋友們可以測試下。

以下是我們給大家分享了易語言IP數(shù)據(jù)庫查詢相關的內容代碼,大家可以測試下

.版本 2
.支持庫 spec

.程序集 程序集1

.子程序 _啟動子程序, 整數(shù)型, , 請在本子程序中放置易模塊初始化代碼


_臨時子程序 () ' 在初始化代碼執(zhí)行完畢后調用測試代碼
返回 (0) ' 可以根據(jù)您的需要返回任意數(shù)值

.子程序 _臨時子程序

' 本名稱子程序用作測試程序用,僅在開發(fā)及調試環(huán)境中有效,編譯發(fā)布程序前將被系統(tǒng)自動清空,請將所有用作測試的臨時代碼放在本子程序中。 ***注意不要修改本子程序的名稱、參數(shù)及返回值類型。
調試輸出 (查詢IP歸屬地 (“192.168.0.0”))


.子程序 查詢IP歸屬地, 文本型, 公開, 查詢IP地址的地理位置
.參數(shù) IP地址, 文本型, , 可以是域名
.參數(shù) 數(shù)據(jù)庫文件名, 文本型, 可空
.局部變量 文件號, 整數(shù)型
.局部變量 文件頭字節(jié)集, 字節(jié)集
.局部變量 IP數(shù)量, 長整數(shù)型
.局部變量 計次變量, 整數(shù)型
.局部變量 開始IP字節(jié)集, 字節(jié)集
.局部變量 結束IP偏移, 長整數(shù)型
.局部變量 結束IP字節(jié)集, 字節(jié)集
.局部變量 地區(qū)偏移, 長整數(shù)型
.局部變量 查詢IP數(shù)值, 長整數(shù)型
.局部變量 地區(qū)文本, 文本型
.局部變量 IP段信息, 文本型
.局部變量 開始IP讀取位置, 長整數(shù)型
.局部變量 開始ip, 文本型
.局部變量 結束IP, 文本型
.局部變量 first_start_ip_offset, 長整數(shù)型
.局部變量 last_start_ip_offset, 長整數(shù)型
.局部變量 開始IP數(shù)值, 長整數(shù)型
.局部變量 結束IP數(shù)值, 長整數(shù)型

.如果真 (IP地址 = “”)
  返回 (“”)
.如果真結束
.如果真 (是否為空 (數(shù)據(jù)庫文件名))
  數(shù)據(jù)庫文件名 = “.\QQWry.dat”
.如果真結束
文件號 = 打開文件 (數(shù)據(jù)庫文件名, #讀入, #無限制)
.如果真 (文件號 = 0)
  信息框 (“沒找到數(shù)據(jù)庫”, 0, , )
  返回 (“”)
.如果真結束
文件頭字節(jié)集 = 讀入字節(jié)集 (文件號, 8)
first_start_ip_offset = 取字節(jié)集數(shù)據(jù) (取字節(jié)集左邊 (文件頭字節(jié)集, 4), #整數(shù)型, )
last_start_ip_offset = 取字節(jié)集數(shù)據(jù) (取字節(jié)集右邊 (文件頭字節(jié)集, 4), #整數(shù)型, )
IP數(shù)量 = (last_start_ip_offset - first_start_ip_offset) \ 7 + 1
查詢IP數(shù)值 = IP文本轉整數(shù)值 (IP地址)
開始IP讀取位置 = 二分法確定位置 (文件號, first_start_ip_offset, 1, IP數(shù)量, 查詢IP數(shù)值)
移動讀寫位置 (文件號, , first_start_ip_offset + (開始IP讀取位置 - 1) × 7)
開始IP字節(jié)集 = 讀入字節(jié)集 (文件號, 7)
開始ip = IP文本補位 (取十六進制文本 (取字節(jié)集數(shù)據(jù) (取字節(jié)集左邊 (開始IP字節(jié)集, 4), #整數(shù)型, )))
結束IP偏移 = 取字節(jié)集數(shù)據(jù) (取字節(jié)集右邊 (開始IP字節(jié)集, 3), #整數(shù)型, )
移動讀寫位置 (文件號, , 結束IP偏移)
結束IP字節(jié)集 = 讀入字節(jié)集 (文件號, 4)
結束IP = IP文本補位 (取十六進制文本 (取字節(jié)集數(shù)據(jù) (結束IP字節(jié)集, #整數(shù)型, )))
地區(qū)偏移 = 結束IP偏移 + 4
開始IP數(shù)值 = 十六進制到十進制 (開始ip)
結束IP數(shù)值 = 十六進制到十進制 (結束IP)
.如果真 (查詢IP數(shù)值 ≥ 開始IP數(shù)值 且 查詢IP數(shù)值 ≤ 結束IP數(shù)值)
  地區(qū)文本 = 取地區(qū)文本 (文件號, 地區(qū)偏移)
.如果真結束
關閉文件 (文件號)
返回 (地區(qū)文本)


.子程序 二分法確定位置, 整數(shù)型
.參數(shù) 文件號, 整數(shù)型
.參數(shù) 基址, 長整數(shù)型
.參數(shù) 初始位置, 長整數(shù)型
.參數(shù) 結束位置, 長整數(shù)型
.參數(shù) 查詢值, 長整數(shù)型
.局部變量 中間讀寫位置, 長整數(shù)型
.局部變量 中間位置, 長整數(shù)型
.局部變量 中間IP文本, 文本型
.局部變量 中間IP數(shù)值, 長整數(shù)型
.局部變量 結束讀寫位置, 長整數(shù)型
.局部變量 結束IP文本, 文本型
.局部變量 結束IP數(shù)值, 長整數(shù)型

中間位置 = (初始位置 + 結束位置) \ 2
.如果真 (初始位置 = 中間位置)
  返回 (初始位置)
.如果真結束
結束讀寫位置 = 基址 + (結束位置 - 1) × 7
移動讀寫位置 (文件號, , 結束讀寫位置)
結束IP文本 = IP文本補位 (取十六進制文本 (取字節(jié)集數(shù)據(jù) (取字節(jié)集左邊 (讀入字節(jié)集 (文件號, 7), 4), #整數(shù)型, )))
結束IP數(shù)值 = 十六進制到十進制 (結束IP文本)
.如果真 (查詢值 ≥ 結束IP數(shù)值)
  返回 (結束位置)
.如果真結束
中間讀寫位置 = 基址 + (中間位置 - 1) × 7
移動讀寫位置 (文件號, , 中間讀寫位置)
中間IP文本 = IP文本補位 (取十六進制文本 (取字節(jié)集數(shù)據(jù) (取字節(jié)集左邊 (讀入字節(jié)集 (文件號, 7), 4), #整數(shù)型, )))
中間IP數(shù)值 = 十六進制到十進制 (中間IP文本)
.如果真 (查詢值 < 中間IP數(shù)值)
  .如果真 (結束位置 - 初始位置 = 1)
    返回 (初始位置)
  .如果真結束
  返回 (二分法確定位置 (文件號, 基址, 初始位置, 中間位置, 查詢值))
.如果真結束
.如果真 (查詢值 > 中間IP數(shù)值)
  返回 (二分法確定位置 (文件號, 基址, 中間位置, 結束位置, 查詢值))
.如果真結束
.如果真 (查詢值 = 中間IP數(shù)值)
  返回 (中間位置)
.如果真結束
返回 (0)

.子程序 取地區(qū)文本, 文本型
.參數(shù) 文件號, 整數(shù)型
.參數(shù) 地區(qū)偏移, 整數(shù)型
.局部變量 首字節(jié)集, 字節(jié)集
.局部變量 偏移, 整數(shù)型
.局部變量 國家記錄, 文本型
.局部變量 地區(qū)記錄, 文本型
.局部變量 長度, 整數(shù)型

移動讀寫位置 (文件號, , 地區(qū)偏移)
首字節(jié)集 = 讀入字節(jié)集 (文件號, 1)
.判斷開始 (首字節(jié)集 = { 1 }) ' 模式1的國家記錄后面不會再有地區(qū)記錄
  偏移 = 取字節(jié)集數(shù)據(jù) (讀入字節(jié)集 (文件號, 3), #整數(shù)型, )
  國家記錄 = 讀國家記錄 (文件號, 偏移, 長度)
  偏移 = 偏移 + 長度

  地區(qū)記錄 = 讀地區(qū)記錄 (文件號, 偏移)

.判斷 (首字節(jié)集 = { 2 }) ' 模式2的國家記錄后會有地區(qū)記錄
  偏移 = 取字節(jié)集數(shù)據(jù) (讀入字節(jié)集 (文件號, 3), #整數(shù)型, )
  國家記錄 = 讀國家記錄 (文件號, 偏移, 長度)
  偏移 = 地區(qū)偏移 + 4
  地區(qū)記錄 = 讀地區(qū)記錄 (文件號, 偏移)

.默認
  偏移 = 地區(qū)偏移
  國家記錄 = 讀國家記錄 (文件號, 偏移, 長度)

  偏移 = 偏移 + 長度
  地區(qū)記錄 = 讀地區(qū)記錄 (文件號, 偏移)
.判斷結束

.如果真 (到大寫 (刪首尾空 (地區(qū)記錄)) = “CZ88.NET”)
  地區(qū)記錄 = “”
.如果真結束
.如果真 (地區(qū)記錄 = “” 且 國家記錄 ≠ “”)
  返回 (國家記錄)
.如果真結束
.如果真 (地區(qū)記錄 ≠ “” 且 國家記錄 = “”)
  返回 (地區(qū)記錄)
.如果真結束
.如果真 (國家記錄 = 地區(qū)記錄)
  返回 (國家記錄)
.如果真結束
返回 (國家記錄 + “ ” + 地區(qū)記錄)

.子程序 讀國家記錄, 文本型
.參數(shù) 文件號, 整數(shù)型
.參數(shù) 地區(qū)偏移, 整數(shù)型
.參數(shù) 長度, 整數(shù)型, 參考, 記錄所占的長度
.局部變量 首字節(jié)集, 字節(jié)集
.局部變量 偏移, 整數(shù)型
.局部變量 國家記錄, 文本型
.局部變量 記錄長度, 整數(shù)型

移動讀寫位置 (文件號, #文件首, 地區(qū)偏移)
首字節(jié)集 = 讀入字節(jié)集 (文件號, 1)
.如果 (首字節(jié)集 = { 2 }) ' 第2次重定向一定是模式2
  偏移 = 取字節(jié)集數(shù)據(jù) (讀入字節(jié)集 (文件號, 3), #整數(shù)型, )
  移動讀寫位置 (文件號, #文件首, 偏移)
  首字節(jié)集 = 讀入字節(jié)集 (文件號, 1)
  .如果 (首字節(jié)集 = { 2 } 或 首字節(jié)集 = { 1 }) ' 可能有錯誤,不管了
    偏移 = 取字節(jié)集數(shù)據(jù) (讀入字節(jié)集 (文件號, 3), #整數(shù)型, )
    移動讀寫位置 (文件號, #文件首, 偏移)

  .否則
    ' 不是重定向
    移動讀寫位置 (文件號, #現(xiàn)行位置, -1) ' 移動回去 上面讀過一字節(jié)數(shù)據(jù)了

  .如果結束
  國家記錄 = 讀入文本 (文件號, )
  長度 = 4
.否則
  ' 不是重定向
  移動讀寫位置 (文件號, #現(xiàn)行位置, -1) ' 移動回去 上面讀過一字節(jié)數(shù)據(jù)了
  國家記錄 = 讀入文本 (文件號, )
  記錄長度 = 取文本長度 (國家記錄)
  長度 = 記錄長度 + 1
.如果結束

返回 (國家記錄)

.子程序 讀地區(qū)記錄, 文本型
.參數(shù) 文件號, 整數(shù)型
.參數(shù) 地區(qū)偏移
.局部變量 首字節(jié)集, 字節(jié)集
.局部變量 偏移, 整數(shù)型
.局部變量 地區(qū)記錄, 文本型

移動讀寫位置 (文件號, #文件首, 地區(qū)偏移)
首字節(jié)集 = 讀入字節(jié)集 (文件號, 1)
.如果 (首字節(jié)集 = { 1 } 或 首字節(jié)集 = { 2 }) ' 對于地區(qū)記錄,模式1和模式2是一樣的
  偏移 = 取字節(jié)集數(shù)據(jù) (讀入字節(jié)集 (文件號, 3), #整數(shù)型, )
  移動讀寫位置 (文件號, #文件首, 偏移)
  首字節(jié)集 = 讀入字節(jié)集 (文件號, 1)
  .如果 (首字節(jié)集 = { 1 } 或 首字節(jié)集 = { 2 }) ' 再來判斷下是否是重定向,安全第一
    偏移 = 取字節(jié)集數(shù)據(jù) (讀入字節(jié)集 (文件號, 3), #整數(shù)型, )
    移動讀寫位置 (文件號, #文件首, 偏移)
  .否則
    ' 不是重定向
    移動讀寫位置 (文件號, #現(xiàn)行位置, -1) ' 移動回去 上面讀過一字節(jié)數(shù)據(jù)了
  .如果結束

.否則
  ' 不是重定向
  移動讀寫位置 (文件號, #現(xiàn)行位置, -1) ' 移動回去 上面讀過一字節(jié)數(shù)據(jù)了
.如果結束

地區(qū)記錄 = 讀入文本 (文件號, )
返回 (地區(qū)記錄)

.子程序 IP文本轉整數(shù)值, 長整數(shù)型
.參數(shù) IP文本, 文本型
.局部變量 IP變量數(shù)組, 文本型, , "0"
.局部變量 十六進制IP文本, 文本型
.局部變量 十進制值, 長整數(shù)型
.局部變量 新ip, 文本型
.局部變量 i, 整數(shù)型
.局部變量 IP段, 文本型

IP變量數(shù)組 = 分割文本 (IP文本, “.”, )
.如果真 (取數(shù)組成員數(shù) (IP變量數(shù)組) ≠ 4)
  新ip = 轉換為IP地址 (IP文本)
  IP變量數(shù)組 = 分割文本 (新ip, “.”, )
  .如果真 (取數(shù)組成員數(shù) (IP變量數(shù)組) ≠ 4)
    返回 (0)
  .如果真結束

.如果真結束
十六進制IP文本 = “”
.計次循環(huán)首 (4, i)
  IP段 = 取文本右邊 (“00” + 取十六進制文本 (到整數(shù) (IP變量數(shù)組 [5 - i])), 2)
  十六進制IP文本 = 十六進制IP文本 + IP段
.計次循環(huán)尾 ()
十進制值 = 十六進制到十進制 (倒轉十六進制文本 (十六進制IP文本))
返回 (十進制值)

.子程序 十六進制到十進制, 長整數(shù)型
.參數(shù) 十六進制文本, 文本型
.局部變量 字節(jié)集, 字節(jié)集
.局部變量 字節(jié)集長度, 整數(shù)型
.局部變量 最終值, 長整數(shù)型
.局部變量 i, 整數(shù)型, , , 中間循環(huán)變量
.局部變量 臨時數(shù)值, 整數(shù)型, , , 每一位上的值

字節(jié)集 = 到字節(jié)集 (到大寫 (十六進制文本))
字節(jié)集長度 = 取字節(jié)集長度 (字節(jié)集)
.計次循環(huán)首 (字節(jié)集長度, i)
  臨時數(shù)值 = 字節(jié)集 [字節(jié)集長度 - i + 1]
  .如果真 (臨時數(shù)值 > 64 且 臨時數(shù)值 < 71) ' A=65 F=70
    最終值 = 最終值 + (臨時數(shù)值 - 65 + 10) × 求次方 (16, i - 1)
    到循環(huán)尾 ()
  .如果真結束
  最終值 = 最終值 + 到整數(shù) (字符 (臨時數(shù)值)) × 求次方 (16, i - 1)
.計次循環(huán)尾 ()
返回 (最終值)

.子程序 倒轉十六進制文本, 文本型
.參數(shù) IP地址文本, 文本型
.局部變量 計次變量, 整數(shù)型
.局部變量 臨時文本, 文本型
.局部變量 結果文本, 文本型

臨時文本 = IP文本補位 (IP地址文本)
.計次循環(huán)首 (4, 計次變量)
  結果文本 = 結果文本 + 取文本中間 (臨時文本, 8 - 計次變量 × 2 + 1, 2)
.計次循環(huán)尾 ()
返回 (結果文本)


.子程序 IP文本補位, 文本型
.參數(shù) IP地址文本, 文本型
.局部變量 文本長度, 整數(shù)型
.局部變量 臨時文本, 文本型
.局部變量 計次變量, 整數(shù)型

臨時文本 = IP地址文本
文本長度 = 取文本長度 (IP地址文本)
.如果真 (文本長度 < 8)
  臨時文本 = 取重復文本 (8 - 文本長度, “0”) + 臨時文本
.如果真結束
返回 (臨時文本)

.子程序 十六進制文本到IP地址, 文本型
.參數(shù) IP文本, 文本型
.局部變量 臨時文本, 文本型
.局部變量 結果文本, 文本型
.局部變量 計次變量, 整數(shù)型
.局部變量 結果ip, 文本型, , "4"
.局部變量 IP地址, 文本型

臨時文本 = IP文本補位 (IP文本)
.計次循環(huán)首 (4, 計次變量)
  結果文本 = 取文本中間 (臨時文本, 1 + (計次變量 - 1) × 2, 2)
  IP地址 = IP地址 + 到文本 (十六進制到十進制 (結果文本)) + “.”
.計次循環(huán)尾 ()
返回 (取文本左邊 (IP地址, 取文本長度 (IP地址) - 1))

以上代碼大家可以在易語言環(huán)境里測試下,感謝大家對腳本之家的支持。

相關文章

  • 易語言調用api獲取網卡信息網絡連接名的代碼

    易語言調用api獲取網卡信息網絡連接名的代碼

    今天小編就為大家分享一篇關于易語言調用api獲取網卡信息網絡連接名的代碼,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言將數(shù)值轉換為指定格式的文本

    易語言將數(shù)值轉換為指定格式的文本

    今天小編就為大家分享一篇關于易語言將數(shù)值轉換為指定格式的文本,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言將指定的主機名與IP地址轉換功能

    易語言將指定的主機名與IP地址轉換功能

    今天小編就為大家分享一篇關于易語言將指定的主機名與IP地址轉換功能,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言設置在月歷框架內是否顯示今天的日期

    易語言設置在月歷框架內是否顯示今天的日期

    今天小編就為大家分享一篇關于易語言設置在月歷框架內是否顯示今天的日期,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言四舍五入命令使用講解

    易語言四舍五入命令使用講解

    今天小編就為大家分享一篇關于易語言四舍五入命令使用講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 淺析易語言網賺應用心得

    淺析易語言網賺應用心得

    在本篇文章里我們給大家整理了易語言網賺應用學習心得和相關知識點,有需要的朋友們可以參考下。
    2018-11-11
  • 易語API監(jiān)視鼠標狀態(tài)教學

    易語API監(jiān)視鼠標狀態(tài)教學

    在本篇文章中小編給大家分享了關于易語言調用系統(tǒng)鉤子API監(jiān)視鼠標狀態(tài)教學,有興趣的朋友們學習下。
    2019-01-01
  • 詳解易語言自適應組件的寫法與思路

    詳解易語言自適應組件的寫法與思路

    在本篇內容里小編給各位分享了關于易語言自適應組件的寫法與思路,喜歡易語言的朋友們可以學習下。
    2019-01-01
  • 易語言送你999朵玫瑰花源碼

    易語言送你999朵玫瑰花源碼

    今天小編就為大家分享一篇關于易語言送你999朵玫瑰花源碼,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 一步一步跟我學易語言之初學者的常見問題

    一步一步跟我學易語言之初學者的常見問題

    今天小編就為大家分享一篇關于一步一步跟我學易語言之初學者的常見問題,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10

最新評論