热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【VB.NET】IP地址与INTEGER之间互转

分享最近写的一个IP地址与INT数据之间相互转换的函数,注意,该函数仅支持IPv4协议,不支持Ipv6。下面的函数支持输出为INT或UIN

分享最近写的一个IP地址与INT数据之间相互转换的函数,注意,该函数仅支持IPv4协议,不支持Ipv6。

 

下面的函数支持输出为INT或UINT类型,但实际上IP存储在INT和UINT内的数据在内存里的结构都是一样的,不过貌似SQL只支持INT结构的数据库,当然,请根据你自己的使用目的来选择函数。

 

Imports System.Text.RegularExpressions
Imports System.Net

#Region "IP与INT互转"

''' 将ip地址转换为int
Shared Function m_ip2int(ByVal ipads As String) As Integer
Dim ret As Integer = 0, b As Integer = 0
Dim mc As Match = Regex.Match(ipads, "(\d+)\.(\d+)\.(\d+)\.(\d+)")
If Not mc.Success Then Return 0
For i As Integer = 1 To 4
ret
<<&#61; 8
b
&#61; mc.Groups(i).Value
If b > Byte.MaxValue Then Return 0
ret
&#43;&#61; b
Next
Return ret
End Function
Shared Function m_ip2int(ByVal ipads As IPAddress) As Integer
Dim bs As Byte() &#61; ipads.GetAddressBytes
If bs.Length <> 4 Then Return 0
Dim ret As Integer &#61; 0
For Each i As Byte In bs
ret
<<&#61; 8
ret
&#43;&#61; i
Next
Return ret
End Function
&#39;&#39;&#39; 将int转换为ip地址
Shared Function m_int2ip(ByVal ipint As Integer) As String
Dim ret(3) As Byte
Dim b As Integer &#61; 255
For i As Integer &#61; 0 To 3
ret(i)
&#61; ipint And b
ipint
>>&#61; 8
Next
Return String.Format("{3}.{2}.{1}.{0}", ret(0), ret(1), ret(2), ret(3))
End Function

&#39;&#39;&#39; 将ip地址转换为uint
Shared Function m_ip2uint(ByVal ip As String) As UInteger
Dim bs As Byte() &#61; IPAddress.Parse(ip).GetAddressBytes
Return CUInt(bs(3)) &#43; (CUInt(bs(2)) << 8) &#43; (CUInt(bs(1)) << 16) &#43; (CUInt(bs(0)) << 24)
End Function
&#39;&#39;&#39; 将uint转换为ip地址
Shared Function m_uint2ip(ByVal ip As UInteger) As String
Return New IPAddress(ip).ToString
End Function

&#39;&#39;&#39; 将ip地址转换为int
Shared Function m_IpToUInt(ByVal ip As String) As UInteger
Dim bs As Byte() &#61; IPAddress.Parse(ip).GetAddressBytes
Return CUInt(bs(3)) &#43; (CUInt(bs(2)) << 8) &#43; (CUInt(bs(1)) << 16) &#43; (CUInt(bs(0)) << 24)
End Function
&#39;&#39;&#39; 将uint转换为ip地址
Shared Function m_UIntToIP(ByVal ip As UInteger) As String
Return New IPAddress(ip).ToString
End Function

#End Region

转:https://www.cnblogs.com/clso/archive/2010/11/14/1876793.html



推荐阅读
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
  • 在使用 PyInstaller 将 Python 应用程序打包成独立的可执行文件时,若项目中包含动态加载的库或插件,需要正确配置 --hidden-import 和 --add-binary 参数,以确保所有依赖项均能被正确识别和打包。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • Awk是一款功能强大的文本分析与处理工具,尤其在数据解析和报告生成方面表现突出。它通过读取由换行符分隔的记录,并按照指定的字段分隔符来划分和处理这些记录,从而实现复杂的数据操作。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 本文详细探讨了Java中HashMap类的hash()方法的工作原理及其重要性,特别是在JDK 7版本中的实现。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
author-avatar
小文982_412
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有